Merge "Add recorder address to all recording listerner apis." into lmp-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
090354861a
@@ -39,6 +39,8 @@ public abstract class HdmiRecordListener {
|
||||
/**
|
||||
* 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
|
||||
* "ONE_TOUCH_RECORD_". Only
|
||||
* {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE},
|
||||
@@ -47,15 +49,17 @@ public abstract class HdmiRecordListener {
|
||||
* {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal
|
||||
* 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.
|
||||
*
|
||||
* @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}.
|
||||
*/
|
||||
public void onTimerRecordingResult(TimerStatusData data) {
|
||||
public void onTimerRecordingResult(int recorderAddress, TimerStatusData data) {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -230,6 +234,8 @@ public abstract class HdmiRecordListener {
|
||||
/**
|
||||
* 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
|
||||
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING}
|
||||
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING},
|
||||
@@ -239,6 +245,6 @@ public abstract class HdmiRecordListener {
|
||||
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE},
|
||||
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}.
|
||||
*/
|
||||
public void onClearTimerRecordingResult(int result) {
|
||||
public void onClearTimerRecordingResult(int recorderAddress, int result) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,19 +226,19 @@ public final class HdmiTvClient extends HdmiClient {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOneTouchRecordResult(int result) {
|
||||
callback.onOneTouchRecordResult(result);
|
||||
public void onOneTouchRecordResult(int recorderAddress, int result) {
|
||||
callback.onOneTouchRecordResult(recorderAddress, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerRecordingResult(int result) {
|
||||
callback.onTimerRecordingResult(
|
||||
public void onTimerRecordingResult(int recorderAddress, int result) {
|
||||
callback.onTimerRecordingResult(recorderAddress,
|
||||
HdmiRecordListener.TimerStatusData.parseFrom(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClearTimerRecordingResult(int result) {
|
||||
callback.onClearTimerRecordingResult(result);
|
||||
public void onClearTimerRecordingResult(int recorderAddress, int result) {
|
||||
callback.onClearTimerRecordingResult(recorderAddress, result);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -31,19 +31,25 @@ package android.hardware.hdmi;
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
void onOneTouchRecordResult(int result);
|
||||
void onOneTouchRecordResult(int recorderAddress, int result);
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
void onTimerRecordingResult(int result);
|
||||
void onTimerRecordingResult(int recorderAddress, int result);
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
@@ -1029,6 +1029,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
OneTouchRecordAction action = actions.get(0);
|
||||
if (action.getRecorderAddress() != message.getSource()) {
|
||||
announceOneTouchRecordResult(
|
||||
message.getSource(),
|
||||
HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS);
|
||||
}
|
||||
return super.handleRecordTvScreen(message);
|
||||
@@ -1047,20 +1048,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
protected boolean handleTimerClearedStatus(HdmiCecMessage message) {
|
||||
byte[] params = message.getParams();
|
||||
int timerClearedStatusData = params[0] & 0xFF;
|
||||
announceTimerRecordingResult(timerClearedStatusData);
|
||||
announceTimerRecordingResult(message.getSource(), timerClearedStatusData);
|
||||
return true;
|
||||
}
|
||||
|
||||
void announceOneTouchRecordResult(int result) {
|
||||
mService.invokeOneTouchRecordResult(result);
|
||||
void announceOneTouchRecordResult(int recorderAddress, int result) {
|
||||
mService.invokeOneTouchRecordResult(recorderAddress, result);
|
||||
}
|
||||
|
||||
void announceTimerRecordingResult(int result) {
|
||||
mService.invokeTimerRecordingResult(result);
|
||||
void announceTimerRecordingResult(int recorderAddress, int result) {
|
||||
mService.invokeTimerRecordingResult(recorderAddress, result);
|
||||
}
|
||||
|
||||
void announceClearTimerRecordingResult(int result) {
|
||||
mService.invokeClearTimerRecordingResult(result);
|
||||
void announceClearTimerRecordingResult(int recorderAddress, int result) {
|
||||
mService.invokeClearTimerRecordingResult(recorderAddress, result);
|
||||
}
|
||||
|
||||
private boolean isMessageForSystemAudio(HdmiCecMessage message) {
|
||||
@@ -1528,19 +1529,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
assertRunOnServiceThread();
|
||||
if (!mService.isControlEnabled()) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (!checkRecorder(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;
|
||||
}
|
||||
|
||||
if (!checkRecordSource(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;
|
||||
}
|
||||
|
||||
@@ -1555,13 +1558,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
assertRunOnServiceThread();
|
||||
if (!mService.isControlEnabled()) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (!checkRecorder(recorderAddress)) {
|
||||
Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
|
||||
announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
|
||||
announceOneTouchRecordResult(recorderAddress,
|
||||
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1587,13 +1591,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
assertRunOnServiceThread();
|
||||
if (!mService.isControlEnabled()) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (!checkRecorder(recorderAddress)) {
|
||||
Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
|
||||
announceTimerRecordingResult(
|
||||
announceTimerRecordingResult(recorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
return;
|
||||
}
|
||||
@@ -1601,6 +1606,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
if (!checkTimerRecordingSource(sourceType, recordSource)) {
|
||||
Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource));
|
||||
announceTimerRecordingResult(
|
||||
recorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE);
|
||||
return;
|
||||
}
|
||||
@@ -1621,26 +1627,29 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
assertRunOnServiceThread();
|
||||
if (!mService.isControlEnabled()) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (!checkRecorder(recorderAddress)) {
|
||||
Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
|
||||
announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION);
|
||||
announceClearTimerRecordingResult(recorderAddress,
|
||||
CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!checkTimerRecordingSource(sourceType, 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;
|
||||
}
|
||||
|
||||
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;
|
||||
switch (sourceType) {
|
||||
case TIMER_RECORDING_TYPE_DIGITAL:
|
||||
@@ -1657,7 +1666,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
break;
|
||||
default:
|
||||
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;
|
||||
|
||||
}
|
||||
@@ -1665,7 +1675,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
@Override
|
||||
public void onSendCompleted(int error) {
|
||||
if (error != Constants.SEND_RESULT_SUCCESS) {
|
||||
announceClearTimerRecordingResult(
|
||||
announceClearTimerRecordingResult(recorderAddress,
|
||||
CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1661,11 +1661,11 @@ public final class HdmiControlService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
void invokeOneTouchRecordResult(int result) {
|
||||
void invokeOneTouchRecordResult(int recorderAddress, int result) {
|
||||
synchronized (mLock) {
|
||||
if (mRecordListenerRecord != null) {
|
||||
try {
|
||||
mRecordListenerRecord.mListener.onOneTouchRecordResult(result);
|
||||
mRecordListenerRecord.mListener.onOneTouchRecordResult(recorderAddress, result);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e);
|
||||
}
|
||||
@@ -1673,11 +1673,11 @@ public final class HdmiControlService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
void invokeTimerRecordingResult(int result) {
|
||||
void invokeTimerRecordingResult(int recorderAddress, int result) {
|
||||
synchronized (mLock) {
|
||||
if (mRecordListenerRecord != null) {
|
||||
try {
|
||||
mRecordListenerRecord.mListener.onTimerRecordingResult(result);
|
||||
mRecordListenerRecord.mListener.onTimerRecordingResult(recorderAddress, result);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Failed to call onTimerRecordingResult.", e);
|
||||
}
|
||||
@@ -1685,11 +1685,12 @@ public final class HdmiControlService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
void invokeClearTimerRecordingResult(int result) {
|
||||
void invokeClearTimerRecordingResult(int recorderAddress, int result) {
|
||||
synchronized (mLock) {
|
||||
if (mRecordListenerRecord != null) {
|
||||
try {
|
||||
mRecordListenerRecord.mListener.onClearTimerRecordingResult(result);
|
||||
mRecordListenerRecord.mListener.onClearTimerRecordingResult(recorderAddress,
|
||||
result);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e);
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
|
||||
// if failed to send <Record On>, display error message and finish action.
|
||||
if (error != Constants.SEND_RESULT_SUCCESS) {
|
||||
tv().announceOneTouchRecordResult(
|
||||
mRecorderAddress,
|
||||
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
|
||||
finish();
|
||||
return;
|
||||
@@ -94,7 +95,7 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
|
||||
}
|
||||
|
||||
int recordStatus = cmd.getParams()[0];
|
||||
tv().announceOneTouchRecordResult(recordStatus);
|
||||
tv().announceOneTouchRecordResult(mRecorderAddress, recordStatus);
|
||||
Slog.i(TAG, "Got record status:" + recordStatus + " from " + cmd.getSource());
|
||||
|
||||
// If recording started successfully, change state and keep this action until <Record Off>
|
||||
@@ -121,7 +122,8 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
|
||||
return;
|
||||
}
|
||||
|
||||
tv().announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
|
||||
tv().announceOneTouchRecordResult(mRecorderAddress,
|
||||
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
|
||||
mRecorderAddress, mRecordSource);
|
||||
break;
|
||||
default:
|
||||
tv().announceTimerRecordingResult(
|
||||
tv().announceTimerRecordingResult(mRecorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE);
|
||||
finish();
|
||||
return;
|
||||
@@ -83,7 +83,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
|
||||
@Override
|
||||
public void onSendCompleted(int error) {
|
||||
if (error != Constants.SEND_RESULT_SUCCESS) {
|
||||
tv().announceTimerRecordingResult(
|
||||
tv().announceTimerRecordingResult(mRecorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
finish();
|
||||
return;
|
||||
@@ -114,7 +114,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
|
||||
byte[] timerStatusData = cmd.getParams();
|
||||
// [Timer Status Data] should be one or three bytes.
|
||||
if (timerStatusData.length == 1 || timerStatusData.length == 3) {
|
||||
tv().announceTimerRecordingResult(bytesToInt(timerStatusData));
|
||||
tv().announceTimerRecordingResult(mRecorderAddress, bytesToInt(timerStatusData));
|
||||
Slog.i(TAG, "Received [Timer Status Data]:" + Arrays.toString(timerStatusData));
|
||||
} else {
|
||||
Slog.w(TAG, "Invalid [Timer Status Data]:" + Arrays.toString(timerStatusData));
|
||||
@@ -138,7 +138,8 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
|
||||
}
|
||||
int reason = params[1] & 0xFF;
|
||||
Slog.i(TAG, "[Feature Abort] for " + messageType + " reason:" + reason);
|
||||
tv().announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
tv().announceTimerRecordingResult(mRecorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
@@ -163,7 +164,8 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
|
||||
return;
|
||||
}
|
||||
|
||||
tv().announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
tv().announceTimerRecordingResult(mRecorderAddress,
|
||||
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user