Loading core/java/android/hardware/hdmi/HdmiRecordListener.java +9 −3 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ public abstract class HdmiRecordListener { /** /** * Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of one touch record * request * @param result result code. For more details, please look at all constants starting with * @param result result code. For more details, please look at all constants starting with * "ONE_TOUCH_RECORD_". Only * "ONE_TOUCH_RECORD_". Only * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE}, * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE}, Loading @@ -47,15 +49,17 @@ public abstract class HdmiRecordListener { * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal * start of recording; otherwise, describes failure. * start of recording; otherwise, describes failure. */ */ public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) { } } /** /** * Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of timer recording * request * @param data timer status data. For more details, look at {@link TimerStatusData}. * @param data timer status data. For more details, look at {@link TimerStatusData}. */ */ public void onTimerRecordingResult(TimerStatusData data) { public void onTimerRecordingResult(int recorderAddress, TimerStatusData data) { } } /** /** Loading Loading @@ -230,6 +234,8 @@ public abstract class HdmiRecordListener { /** /** * Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request. * * * @param recorderAddress An address of recorder that reports result of clear timer recording * request * @param result result of clear timer. It should be one of * @param result result of clear timer. It should be one of * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING} * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING} * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING}, Loading @@ -239,6 +245,6 @@ public abstract class HdmiRecordListener { * {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}. * {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}. */ */ public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) { } } } } core/java/android/hardware/hdmi/HdmiTvClient.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -226,19 +226,19 @@ public final class HdmiTvClient extends HdmiClient { } } @Override @Override public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) { callback.onOneTouchRecordResult(result); callback.onOneTouchRecordResult(recorderAddress, result); } } @Override @Override public void onTimerRecordingResult(int result) { public void onTimerRecordingResult(int recorderAddress, int result) { callback.onTimerRecordingResult( callback.onTimerRecordingResult(recorderAddress, HdmiRecordListener.TimerStatusData.parseFrom(result)); HdmiRecordListener.TimerStatusData.parseFrom(result)); } } @Override @Override public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) { callback.onClearTimerRecordingResult(result); callback.onClearTimerRecordingResult(recorderAddress, result); } } }; }; } } Loading core/java/android/hardware/hdmi/IHdmiRecordListener.aidl +11 −5 Original line number Original line Diff line number Diff line Loading @@ -31,19 +31,25 @@ package android.hardware.hdmi; /** /** * Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of one touch record * request * @param result result code for one touch record * @param result result code for one touch record */ */ void onOneTouchRecordResult(int result); void onOneTouchRecordResult(int recorderAddress, int result); /** /** * Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization. * * @param recorderAddress An address of recorder that reports result of timer recording * request * @param result result code for timer recording * @param result result code for timer recording */ */ void onTimerRecordingResult(int result); void onTimerRecordingResult(int recorderAddress, int result); /** /** * Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request. * * * @param result result of clear timer. * @param recorderAddress An address of recorder that reports result of clear timer recording * request * @param result result of clear timer */ */ void onClearTimerRecordingResult(int result); void onClearTimerRecordingResult(int recorderAddress, int result); } } No newline at end of file services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +30 −20 Original line number Original line Diff line number Diff line Loading @@ -1029,6 +1029,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { OneTouchRecordAction action = actions.get(0); OneTouchRecordAction action = actions.get(0); if (action.getRecorderAddress() != message.getSource()) { if (action.getRecorderAddress() != message.getSource()) { announceOneTouchRecordResult( announceOneTouchRecordResult( message.getSource(), HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS); HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS); } } return super.handleRecordTvScreen(message); return super.handleRecordTvScreen(message); Loading @@ -1047,20 +1048,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { protected boolean handleTimerClearedStatus(HdmiCecMessage message) { protected boolean handleTimerClearedStatus(HdmiCecMessage message) { byte[] params = message.getParams(); byte[] params = message.getParams(); int timerClearedStatusData = params[0] & 0xFF; int timerClearedStatusData = params[0] & 0xFF; announceTimerRecordingResult(timerClearedStatusData); announceTimerRecordingResult(message.getSource(), timerClearedStatusData); return true; return true; } } void announceOneTouchRecordResult(int result) { void announceOneTouchRecordResult(int recorderAddress, int result) { mService.invokeOneTouchRecordResult(result); mService.invokeOneTouchRecordResult(recorderAddress, result); } } void announceTimerRecordingResult(int result) { void announceTimerRecordingResult(int recorderAddress, int result) { mService.invokeTimerRecordingResult(result); mService.invokeTimerRecordingResult(recorderAddress, result); } } void announceClearTimerRecordingResult(int result) { void announceClearTimerRecordingResult(int recorderAddress, int result) { mService.invokeClearTimerRecordingResult(result); mService.invokeClearTimerRecordingResult(recorderAddress, result); } } private boolean isMessageForSystemAudio(HdmiCecMessage message) { private boolean isMessageForSystemAudio(HdmiCecMessage message) { Loading Loading @@ -1528,19 +1529,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED); return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE; } } if (!checkRecordSource(recordSource)) { if (!checkRecordSource(recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceOneTouchRecordResult(ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); return Constants.ABORT_UNABLE_TO_DETERMINE; return Constants.ABORT_UNABLE_TO_DETERMINE; } } Loading @@ -1555,13 +1558,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not stop one touch record. CEC control is disabled."); Slog.w(TAG, "Can not stop one touch record. CEC control is disabled."); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); return; return; } } Loading @@ -1587,13 +1591,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED); announceTimerRecordingResult(recorderAddress, TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceTimerRecordingResult( announceTimerRecordingResult(recorderAddress, TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); return; return; } } Loading @@ -1601,6 +1606,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceTimerRecordingResult( announceTimerRecordingResult( recorderAddress, TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); return; return; } } Loading @@ -1621,26 +1627,29 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CEC_DISABLE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CEC_DISABLE); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION); return; return; } } if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); return; return; } } sendClearTimerMessage(recorderAddress, sourceType, recordSource); sendClearTimerMessage(recorderAddress, sourceType, recordSource); } } private void sendClearTimerMessage(int recorderAddress, int sourceType, byte[] recordSource) { private void sendClearTimerMessage(final int recorderAddress, int sourceType, byte[] recordSource) { HdmiCecMessage message = null; HdmiCecMessage message = null; switch (sourceType) { switch (sourceType) { case TIMER_RECORDING_TYPE_DIGITAL: case TIMER_RECORDING_TYPE_DIGITAL: Loading @@ -1657,7 +1666,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { break; break; default: default: Slog.w(TAG, "Invalid source type:" + recorderAddress); Slog.w(TAG, "Invalid source type:" + recorderAddress); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); return; return; } } Loading @@ -1665,7 +1675,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @Override @Override public void onSendCompleted(int error) { public void onSendCompleted(int error) { if (error != Constants.SEND_RESULT_SUCCESS) { if (error != Constants.SEND_RESULT_SUCCESS) { announceClearTimerRecordingResult( announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); } } } } Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -1661,11 +1661,11 @@ public final class HdmiControlService extends SystemService { } } } } void invokeOneTouchRecordResult(int result) { void invokeOneTouchRecordResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onOneTouchRecordResult(result); mRecordListenerRecord.mListener.onOneTouchRecordResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e); Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e); } } Loading @@ -1673,11 +1673,11 @@ public final class HdmiControlService extends SystemService { } } } } void invokeTimerRecordingResult(int result) { void invokeTimerRecordingResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onTimerRecordingResult(result); mRecordListenerRecord.mListener.onTimerRecordingResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onTimerRecordingResult.", e); } } Loading @@ -1685,11 +1685,12 @@ public final class HdmiControlService extends SystemService { } } } } void invokeClearTimerRecordingResult(int result) { void invokeClearTimerRecordingResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onClearTimerRecordingResult(result); mRecordListenerRecord.mListener.onClearTimerRecordingResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e); } } Loading Loading
core/java/android/hardware/hdmi/HdmiRecordListener.java +9 −3 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ public abstract class HdmiRecordListener { /** /** * Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of one touch record * request * @param result result code. For more details, please look at all constants starting with * @param result result code. For more details, please look at all constants starting with * "ONE_TOUCH_RECORD_". Only * "ONE_TOUCH_RECORD_". Only * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE}, * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE}, Loading @@ -47,15 +49,17 @@ public abstract class HdmiRecordListener { * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal * start of recording; otherwise, describes failure. * start of recording; otherwise, describes failure. */ */ public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) { } } /** /** * Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of timer recording * request * @param data timer status data. For more details, look at {@link TimerStatusData}. * @param data timer status data. For more details, look at {@link TimerStatusData}. */ */ public void onTimerRecordingResult(TimerStatusData data) { public void onTimerRecordingResult(int recorderAddress, TimerStatusData data) { } } /** /** Loading Loading @@ -230,6 +234,8 @@ public abstract class HdmiRecordListener { /** /** * Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request. * * * @param recorderAddress An address of recorder that reports result of clear timer recording * request * @param result result of clear timer. It should be one of * @param result result of clear timer. It should be one of * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING} * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING} * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING}, Loading @@ -239,6 +245,6 @@ public abstract class HdmiRecordListener { * {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}. * {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}. */ */ public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) { } } } }
core/java/android/hardware/hdmi/HdmiTvClient.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -226,19 +226,19 @@ public final class HdmiTvClient extends HdmiClient { } } @Override @Override public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) { callback.onOneTouchRecordResult(result); callback.onOneTouchRecordResult(recorderAddress, result); } } @Override @Override public void onTimerRecordingResult(int result) { public void onTimerRecordingResult(int recorderAddress, int result) { callback.onTimerRecordingResult( callback.onTimerRecordingResult(recorderAddress, HdmiRecordListener.TimerStatusData.parseFrom(result)); HdmiRecordListener.TimerStatusData.parseFrom(result)); } } @Override @Override public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) { callback.onClearTimerRecordingResult(result); callback.onClearTimerRecordingResult(recorderAddress, result); } } }; }; } } Loading
core/java/android/hardware/hdmi/IHdmiRecordListener.aidl +11 −5 Original line number Original line Diff line number Diff line Loading @@ -31,19 +31,25 @@ package android.hardware.hdmi; /** /** * Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization. * * * @param recorderAddress An address of recorder that reports result of one touch record * request * @param result result code for one touch record * @param result result code for one touch record */ */ void onOneTouchRecordResult(int result); void onOneTouchRecordResult(int recorderAddress, int result); /** /** * Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization. * * @param recorderAddress An address of recorder that reports result of timer recording * request * @param result result code for timer recording * @param result result code for timer recording */ */ void onTimerRecordingResult(int result); void onTimerRecordingResult(int recorderAddress, int result); /** /** * Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request. * * * @param result result of clear timer. * @param recorderAddress An address of recorder that reports result of clear timer recording * request * @param result result of clear timer */ */ void onClearTimerRecordingResult(int result); void onClearTimerRecordingResult(int recorderAddress, int result); } } No newline at end of file
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +30 −20 Original line number Original line Diff line number Diff line Loading @@ -1029,6 +1029,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { OneTouchRecordAction action = actions.get(0); OneTouchRecordAction action = actions.get(0); if (action.getRecorderAddress() != message.getSource()) { if (action.getRecorderAddress() != message.getSource()) { announceOneTouchRecordResult( announceOneTouchRecordResult( message.getSource(), HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS); HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS); } } return super.handleRecordTvScreen(message); return super.handleRecordTvScreen(message); Loading @@ -1047,20 +1048,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { protected boolean handleTimerClearedStatus(HdmiCecMessage message) { protected boolean handleTimerClearedStatus(HdmiCecMessage message) { byte[] params = message.getParams(); byte[] params = message.getParams(); int timerClearedStatusData = params[0] & 0xFF; int timerClearedStatusData = params[0] & 0xFF; announceTimerRecordingResult(timerClearedStatusData); announceTimerRecordingResult(message.getSource(), timerClearedStatusData); return true; return true; } } void announceOneTouchRecordResult(int result) { void announceOneTouchRecordResult(int recorderAddress, int result) { mService.invokeOneTouchRecordResult(result); mService.invokeOneTouchRecordResult(recorderAddress, result); } } void announceTimerRecordingResult(int result) { void announceTimerRecordingResult(int recorderAddress, int result) { mService.invokeTimerRecordingResult(result); mService.invokeTimerRecordingResult(recorderAddress, result); } } void announceClearTimerRecordingResult(int result) { void announceClearTimerRecordingResult(int recorderAddress, int result) { mService.invokeClearTimerRecordingResult(result); mService.invokeClearTimerRecordingResult(recorderAddress, result); } } private boolean isMessageForSystemAudio(HdmiCecMessage message) { private boolean isMessageForSystemAudio(HdmiCecMessage message) { Loading Loading @@ -1528,19 +1529,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED); return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE; } } if (!checkRecordSource(recordSource)) { if (!checkRecordSource(recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceOneTouchRecordResult(ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); return Constants.ABORT_UNABLE_TO_DETERMINE; return Constants.ABORT_UNABLE_TO_DETERMINE; } } Loading @@ -1555,13 +1558,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not stop one touch record. CEC control is disabled."); Slog.w(TAG, "Can not stop one touch record. CEC control is disabled."); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); return; return; } } Loading @@ -1587,13 +1591,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED); announceTimerRecordingResult(recorderAddress, TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceTimerRecordingResult( announceTimerRecordingResult(recorderAddress, TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); return; return; } } Loading @@ -1601,6 +1606,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceTimerRecordingResult( announceTimerRecordingResult( recorderAddress, TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); return; return; } } Loading @@ -1621,26 +1627,29 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { assertRunOnServiceThread(); assertRunOnServiceThread(); if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) { Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CEC_DISABLE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CEC_DISABLE); return; return; } } if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) { Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION); return; return; } } if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) { Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); return; return; } } sendClearTimerMessage(recorderAddress, sourceType, recordSource); sendClearTimerMessage(recorderAddress, sourceType, recordSource); } } private void sendClearTimerMessage(int recorderAddress, int sourceType, byte[] recordSource) { private void sendClearTimerMessage(final int recorderAddress, int sourceType, byte[] recordSource) { HdmiCecMessage message = null; HdmiCecMessage message = null; switch (sourceType) { switch (sourceType) { case TIMER_RECORDING_TYPE_DIGITAL: case TIMER_RECORDING_TYPE_DIGITAL: Loading @@ -1657,7 +1666,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { break; break; default: default: Slog.w(TAG, "Invalid source type:" + recorderAddress); Slog.w(TAG, "Invalid source type:" + recorderAddress); announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); return; return; } } Loading @@ -1665,7 +1675,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @Override @Override public void onSendCompleted(int error) { public void onSendCompleted(int error) { if (error != Constants.SEND_RESULT_SUCCESS) { if (error != Constants.SEND_RESULT_SUCCESS) { announceClearTimerRecordingResult( announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); } } } } Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -1661,11 +1661,11 @@ public final class HdmiControlService extends SystemService { } } } } void invokeOneTouchRecordResult(int result) { void invokeOneTouchRecordResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onOneTouchRecordResult(result); mRecordListenerRecord.mListener.onOneTouchRecordResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e); Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e); } } Loading @@ -1673,11 +1673,11 @@ public final class HdmiControlService extends SystemService { } } } } void invokeTimerRecordingResult(int result) { void invokeTimerRecordingResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onTimerRecordingResult(result); mRecordListenerRecord.mListener.onTimerRecordingResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onTimerRecordingResult.", e); } } Loading @@ -1685,11 +1685,12 @@ public final class HdmiControlService extends SystemService { } } } } void invokeClearTimerRecordingResult(int result) { void invokeClearTimerRecordingResult(int recorderAddress, int result) { synchronized (mLock) { synchronized (mLock) { if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) { try { try { mRecordListenerRecord.mListener.onClearTimerRecordingResult(result); mRecordListenerRecord.mListener.onClearTimerRecordingResult(recorderAddress, result); } catch (RemoteException e) { } catch (RemoteException e) { Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e); } } Loading