Loading api/current.txt +5 −1 Original line number Original line Diff line number Diff line Loading @@ -30257,6 +30257,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback, android.os.Handler); method public void reject(boolean, java.lang.String); method public void reject(boolean, java.lang.String); method public void splitFromConference(); method public void splitFromConference(); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -30564,6 +30565,7 @@ package android.telecom { public static abstract class InCallService.VideoCall { public static abstract class InCallService.VideoCall { ctor public InCallService.VideoCall(); ctor public InCallService.VideoCall(); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler); method public abstract void requestCallDataUsage(); method public abstract void requestCallDataUsage(); method public abstract void requestCameraCapabilities(); method public abstract void requestCameraCapabilities(); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); Loading @@ -30574,7 +30576,7 @@ package android.telecom { method public abstract void setPauseImage(java.lang.String); method public abstract void setPauseImage(java.lang.String); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setZoom(float); method public abstract void setZoom(float); method public abstract void unregisterCallback(); method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback); } } public static abstract class InCallService.VideoCall.Callback { public static abstract class InCallService.VideoCall.Callback { Loading Loading @@ -30662,6 +30664,7 @@ package android.telecom { method public void merge(); method public void merge(); method public void playDtmfTone(char); method public void playDtmfTone(char); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler); method public void separate(android.telecom.RemoteConnection); method public void separate(android.telecom.RemoteConnection); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -30701,6 +30704,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler); method public void reject(); method public void reject(); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); api/system-current.txt +5 −1 Original line number Original line Diff line number Diff line Loading @@ -32371,6 +32371,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback, android.os.Handler); method public void reject(boolean, java.lang.String); method public void reject(boolean, java.lang.String); method public deprecated void removeListener(android.telecom.Call.Listener); method public deprecated void removeListener(android.telecom.Call.Listener); method public void splitFromConference(); method public void splitFromConference(); Loading Loading @@ -32687,6 +32688,7 @@ package android.telecom { public static abstract class InCallService.VideoCall { public static abstract class InCallService.VideoCall { ctor public InCallService.VideoCall(); ctor public InCallService.VideoCall(); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler); method public abstract void requestCallDataUsage(); method public abstract void requestCallDataUsage(); method public abstract void requestCameraCapabilities(); method public abstract void requestCameraCapabilities(); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); Loading @@ -32697,7 +32699,7 @@ package android.telecom { method public abstract void setPauseImage(java.lang.String); method public abstract void setPauseImage(java.lang.String); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setZoom(float); method public abstract void setZoom(float); method public abstract void unregisterCallback(); method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback); } } public static abstract class InCallService.VideoCall.Callback { public static abstract class InCallService.VideoCall.Callback { Loading Loading @@ -32805,6 +32807,7 @@ package android.telecom { method public void merge(); method public void merge(); method public void playDtmfTone(char); method public void playDtmfTone(char); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler); method public void separate(android.telecom.RemoteConnection); method public void separate(android.telecom.RemoteConnection); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -32844,6 +32847,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler); method public void reject(); method public void reject(); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); telecomm/java/android/telecom/Call.java +111 −28 Original line number Original line Diff line number Diff line Loading @@ -19,10 +19,12 @@ package android.telecom; import android.annotation.SystemApi; import android.annotation.SystemApi; import android.net.Uri; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import java.lang.String; import java.lang.String; import java.util.ArrayList; import java.util.ArrayList; import java.util.Collections; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.List; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; Loading Loading @@ -608,7 +610,7 @@ public final class Call { private final List<String> mChildrenIds = new ArrayList<>(); private final List<String> mChildrenIds = new ArrayList<>(); private final List<Call> mChildren = new ArrayList<>(); private final List<Call> mChildren = new ArrayList<>(); private final List<Call> mUnmodifiableChildren = Collections.unmodifiableList(mChildren); private final List<Call> mUnmodifiableChildren = Collections.unmodifiableList(mChildren); private final List<Callback> mCallbacks = new CopyOnWriteArrayList<>(); private final List<CallbackRecord<Callback>> mCallbackRecords = new CopyOnWriteArrayList<>(); private final List<Call> mConferenceableCalls = new ArrayList<>(); private final List<Call> mConferenceableCalls = new ArrayList<>(); private final List<Call> mUnmodifiableConferenceableCalls = private final List<Call> mUnmodifiableConferenceableCalls = Collections.unmodifiableList(mConferenceableCalls); Collections.unmodifiableList(mConferenceableCalls); Loading Loading @@ -850,7 +852,20 @@ public final class Call { * @param callback A {@code Callback}. * @param callback A {@code Callback}. */ */ public void registerCallback(Callback callback) { public void registerCallback(Callback callback) { mCallbacks.add(callback); registerCallback(callback, new Handler()); } /** * Registers a callback to this {@code Call}. * * @param callback A {@code Callback}. * @param handler A handler which command and status changes will be delivered to. */ public void registerCallback(Callback callback, Handler handler) { unregisterCallback(callback); if (callback != null && handler != null) { mCallbackRecords.add(new CallbackRecord<Callback>(callback, handler)); } } } /** /** Loading @@ -860,7 +875,12 @@ public final class Call { */ */ public void unregisterCallback(Callback callback) { public void unregisterCallback(Callback callback) { if (callback != null) { if (callback != null) { mCallbacks.remove(callback); for (CallbackRecord<Callback> record : mCallbackRecords) { if (record.getCallback() == callback) { mCallbackRecords.remove(record); break; } } } } } } Loading Loading @@ -1021,57 +1041,120 @@ public final class Call { } } } } private void fireStateChanged(int newState) { private void fireStateChanged(final int newState) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onStateChanged(this, newState); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onStateChanged(call, newState); } }); } } } } private void fireParentChanged(Call newParent) { private void fireParentChanged(final Call newParent) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onParentChanged(this, newParent); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onParentChanged(call, newParent); } }); } } } } private void fireChildrenChanged(List<Call> children) { private void fireChildrenChanged(final List<Call> children) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onChildrenChanged(this, children); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onChildrenChanged(call, children); } }); } } } } private void fireDetailsChanged(Details details) { private void fireDetailsChanged(final Details details) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onDetailsChanged(this, details); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onDetailsChanged(call, details); } }); } } } } private void fireCannedTextResponsesLoaded(List<String> cannedTextResponses) { private void fireCannedTextResponsesLoaded(final List<String> cannedTextResponses) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onCannedTextResponsesLoaded(this, cannedTextResponses); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onCannedTextResponsesLoaded(call, cannedTextResponses); } }); } } } } private void fireVideoCallChanged(InCallService.VideoCall videoCall) { private void fireVideoCallChanged(final InCallService.VideoCall videoCall) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onVideoCallChanged(this, videoCall); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onVideoCallChanged(call, videoCall); } }); } } } } private void firePostDialWait(String remainingPostDialSequence) { private void firePostDialWait(final String remainingPostDialSequence) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onPostDialWait(this, remainingPostDialSequence); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onPostDialWait(call, remainingPostDialSequence); } }); } } } } private void fireCallDestroyed() { private void fireCallDestroyed() { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record: mCallbackRecords) { callback.onCallDestroyed(this); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onCallDestroyed(call); } }); } } } } private void fireConferenceableCallsChanged() { private void fireConferenceableCallsChanged() { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onConferenceableCallsChanged(this, mUnmodifiableConferenceableCalls); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onConferenceableCallsChanged(call, mUnmodifiableConferenceableCalls); } }); } } } } } } telecomm/java/android/telecom/CallbackRecord.java 0 → 100644 +44 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telecom; import android.os.Handler; /** * This class is used to associate a generic callback of type T with a handler to which commands and * status updates will be delivered to. * * @hide */ class CallbackRecord<T> { private final T mCallback; private final Handler mHandler; public CallbackRecord(T callback, Handler handler) { mCallback = callback; mHandler = handler; } public T getCallback() { return mCallback; } public Handler getHandler() { return mHandler; } } telecomm/java/android/telecom/InCallService.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -362,6 +362,9 @@ public abstract class InCallService extends Service { */ */ public static abstract class VideoCall { public static abstract class VideoCall { /** @hide */ public abstract void destroy(); /** /** * Registers a callback to receive commands and state changes for video calls. * Registers a callback to receive commands and state changes for video calls. * * Loading @@ -369,10 +372,18 @@ public abstract class InCallService extends Service { */ */ public abstract void registerCallback(VideoCall.Callback callback); public abstract void registerCallback(VideoCall.Callback callback); /** * Registers a callback to receive commands and state changes for video calls. * * @param callback The video call callback. * @param handler A handler which commands and status changes will be delivered to. */ public abstract void registerCallback(VideoCall.Callback callback, Handler handler); /** /** * Clears the video call listener set via {@link #registerCallback}. * Clears the video call listener set via {@link #registerCallback}. */ */ public abstract void unregisterCallback(); public abstract void unregisterCallback(VideoCall.Callback callback); /** /** * Sets the camera to be used for video recording in a video call. * Sets the camera to be used for video recording in a video call. Loading Loading
api/current.txt +5 −1 Original line number Original line Diff line number Diff line Loading @@ -30257,6 +30257,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback, android.os.Handler); method public void reject(boolean, java.lang.String); method public void reject(boolean, java.lang.String); method public void splitFromConference(); method public void splitFromConference(); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -30564,6 +30565,7 @@ package android.telecom { public static abstract class InCallService.VideoCall { public static abstract class InCallService.VideoCall { ctor public InCallService.VideoCall(); ctor public InCallService.VideoCall(); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler); method public abstract void requestCallDataUsage(); method public abstract void requestCallDataUsage(); method public abstract void requestCameraCapabilities(); method public abstract void requestCameraCapabilities(); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); Loading @@ -30574,7 +30576,7 @@ package android.telecom { method public abstract void setPauseImage(java.lang.String); method public abstract void setPauseImage(java.lang.String); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setZoom(float); method public abstract void setZoom(float); method public abstract void unregisterCallback(); method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback); } } public static abstract class InCallService.VideoCall.Callback { public static abstract class InCallService.VideoCall.Callback { Loading Loading @@ -30662,6 +30664,7 @@ package android.telecom { method public void merge(); method public void merge(); method public void playDtmfTone(char); method public void playDtmfTone(char); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler); method public void separate(android.telecom.RemoteConnection); method public void separate(android.telecom.RemoteConnection); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -30701,6 +30704,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler); method public void reject(); method public void reject(); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone();
api/system-current.txt +5 −1 Original line number Original line Diff line number Diff line Loading @@ -32371,6 +32371,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback); method public void registerCallback(android.telecom.Call.Callback, android.os.Handler); method public void reject(boolean, java.lang.String); method public void reject(boolean, java.lang.String); method public deprecated void removeListener(android.telecom.Call.Listener); method public deprecated void removeListener(android.telecom.Call.Listener); method public void splitFromConference(); method public void splitFromConference(); Loading Loading @@ -32687,6 +32688,7 @@ package android.telecom { public static abstract class InCallService.VideoCall { public static abstract class InCallService.VideoCall { ctor public InCallService.VideoCall(); ctor public InCallService.VideoCall(); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback); method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler); method public abstract void requestCallDataUsage(); method public abstract void requestCallDataUsage(); method public abstract void requestCameraCapabilities(); method public abstract void requestCameraCapabilities(); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile); Loading @@ -32697,7 +32699,7 @@ package android.telecom { method public abstract void setPauseImage(java.lang.String); method public abstract void setPauseImage(java.lang.String); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setPreviewSurface(android.view.Surface); method public abstract void setZoom(float); method public abstract void setZoom(float); method public abstract void unregisterCallback(); method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback); } } public static abstract class InCallService.VideoCall.Callback { public static abstract class InCallService.VideoCall.Callback { Loading Loading @@ -32805,6 +32807,7 @@ package android.telecom { method public void merge(); method public void merge(); method public void playDtmfTone(char); method public void playDtmfTone(char); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback); method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler); method public void separate(android.telecom.RemoteConnection); method public void separate(android.telecom.RemoteConnection); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone(); Loading Loading @@ -32844,6 +32847,7 @@ package android.telecom { method public void playDtmfTone(char); method public void playDtmfTone(char); method public void postDialContinue(boolean); method public void postDialContinue(boolean); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback); method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler); method public void reject(); method public void reject(); method public void setAudioState(android.telecom.AudioState); method public void setAudioState(android.telecom.AudioState); method public void stopDtmfTone(); method public void stopDtmfTone();
telecomm/java/android/telecom/Call.java +111 −28 Original line number Original line Diff line number Diff line Loading @@ -19,10 +19,12 @@ package android.telecom; import android.annotation.SystemApi; import android.annotation.SystemApi; import android.net.Uri; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import java.lang.String; import java.lang.String; import java.util.ArrayList; import java.util.ArrayList; import java.util.Collections; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.List; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; Loading Loading @@ -608,7 +610,7 @@ public final class Call { private final List<String> mChildrenIds = new ArrayList<>(); private final List<String> mChildrenIds = new ArrayList<>(); private final List<Call> mChildren = new ArrayList<>(); private final List<Call> mChildren = new ArrayList<>(); private final List<Call> mUnmodifiableChildren = Collections.unmodifiableList(mChildren); private final List<Call> mUnmodifiableChildren = Collections.unmodifiableList(mChildren); private final List<Callback> mCallbacks = new CopyOnWriteArrayList<>(); private final List<CallbackRecord<Callback>> mCallbackRecords = new CopyOnWriteArrayList<>(); private final List<Call> mConferenceableCalls = new ArrayList<>(); private final List<Call> mConferenceableCalls = new ArrayList<>(); private final List<Call> mUnmodifiableConferenceableCalls = private final List<Call> mUnmodifiableConferenceableCalls = Collections.unmodifiableList(mConferenceableCalls); Collections.unmodifiableList(mConferenceableCalls); Loading Loading @@ -850,7 +852,20 @@ public final class Call { * @param callback A {@code Callback}. * @param callback A {@code Callback}. */ */ public void registerCallback(Callback callback) { public void registerCallback(Callback callback) { mCallbacks.add(callback); registerCallback(callback, new Handler()); } /** * Registers a callback to this {@code Call}. * * @param callback A {@code Callback}. * @param handler A handler which command and status changes will be delivered to. */ public void registerCallback(Callback callback, Handler handler) { unregisterCallback(callback); if (callback != null && handler != null) { mCallbackRecords.add(new CallbackRecord<Callback>(callback, handler)); } } } /** /** Loading @@ -860,7 +875,12 @@ public final class Call { */ */ public void unregisterCallback(Callback callback) { public void unregisterCallback(Callback callback) { if (callback != null) { if (callback != null) { mCallbacks.remove(callback); for (CallbackRecord<Callback> record : mCallbackRecords) { if (record.getCallback() == callback) { mCallbackRecords.remove(record); break; } } } } } } Loading Loading @@ -1021,57 +1041,120 @@ public final class Call { } } } } private void fireStateChanged(int newState) { private void fireStateChanged(final int newState) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onStateChanged(this, newState); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onStateChanged(call, newState); } }); } } } } private void fireParentChanged(Call newParent) { private void fireParentChanged(final Call newParent) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onParentChanged(this, newParent); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onParentChanged(call, newParent); } }); } } } } private void fireChildrenChanged(List<Call> children) { private void fireChildrenChanged(final List<Call> children) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onChildrenChanged(this, children); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onChildrenChanged(call, children); } }); } } } } private void fireDetailsChanged(Details details) { private void fireDetailsChanged(final Details details) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onDetailsChanged(this, details); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onDetailsChanged(call, details); } }); } } } } private void fireCannedTextResponsesLoaded(List<String> cannedTextResponses) { private void fireCannedTextResponsesLoaded(final List<String> cannedTextResponses) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onCannedTextResponsesLoaded(this, cannedTextResponses); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onCannedTextResponsesLoaded(call, cannedTextResponses); } }); } } } } private void fireVideoCallChanged(InCallService.VideoCall videoCall) { private void fireVideoCallChanged(final InCallService.VideoCall videoCall) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onVideoCallChanged(this, videoCall); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onVideoCallChanged(call, videoCall); } }); } } } } private void firePostDialWait(String remainingPostDialSequence) { private void firePostDialWait(final String remainingPostDialSequence) { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onPostDialWait(this, remainingPostDialSequence); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onPostDialWait(call, remainingPostDialSequence); } }); } } } } private void fireCallDestroyed() { private void fireCallDestroyed() { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record: mCallbackRecords) { callback.onCallDestroyed(this); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onCallDestroyed(call); } }); } } } } private void fireConferenceableCallsChanged() { private void fireConferenceableCallsChanged() { for (Callback callback : mCallbacks) { for (CallbackRecord<Callback> record : mCallbackRecords) { callback.onConferenceableCallsChanged(this, mUnmodifiableConferenceableCalls); final Call call = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { callback.onConferenceableCallsChanged(call, mUnmodifiableConferenceableCalls); } }); } } } } } }
telecomm/java/android/telecom/CallbackRecord.java 0 → 100644 +44 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telecom; import android.os.Handler; /** * This class is used to associate a generic callback of type T with a handler to which commands and * status updates will be delivered to. * * @hide */ class CallbackRecord<T> { private final T mCallback; private final Handler mHandler; public CallbackRecord(T callback, Handler handler) { mCallback = callback; mHandler = handler; } public T getCallback() { return mCallback; } public Handler getHandler() { return mHandler; } }
telecomm/java/android/telecom/InCallService.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -362,6 +362,9 @@ public abstract class InCallService extends Service { */ */ public static abstract class VideoCall { public static abstract class VideoCall { /** @hide */ public abstract void destroy(); /** /** * Registers a callback to receive commands and state changes for video calls. * Registers a callback to receive commands and state changes for video calls. * * Loading @@ -369,10 +372,18 @@ public abstract class InCallService extends Service { */ */ public abstract void registerCallback(VideoCall.Callback callback); public abstract void registerCallback(VideoCall.Callback callback); /** * Registers a callback to receive commands and state changes for video calls. * * @param callback The video call callback. * @param handler A handler which commands and status changes will be delivered to. */ public abstract void registerCallback(VideoCall.Callback callback, Handler handler); /** /** * Clears the video call listener set via {@link #registerCallback}. * Clears the video call listener set via {@link #registerCallback}. */ */ public abstract void unregisterCallback(); public abstract void unregisterCallback(VideoCall.Callback callback); /** /** * Sets the camera to be used for video recording in a video call. * Sets the camera to be used for video recording in a video call. Loading