import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.hdmi.HdmiHotplugEvent;
import android.media.tv.TvInputHardwareInfo;
import android.media.tv.TvInputInfo;
import android.media.tv.TvStreamConfig;
+import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Surface;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.server.SystemService;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
return (float) mCurrentIndex / (float) mCurrentMaxIndex;
}
+ public void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
+ final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
+ if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump TvInputHardwareManager from pid="
+ + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ synchronized (mLock) {
+ pw.println("TvInputHardwareManager Info:");
+ pw.increaseIndent();
+ pw.println("Connections Info:");
+ pw.increaseIndent();
+ for (int i = 0; i < mConnections.size(); i++) {
+ int deviceId = mConnections.keyAt(i);
+ Connection mConnection = mConnections.valueAt(i);
+ pw.println("Connection (" + deviceId + "): " + mConnection);
+
+ }
+ pw.decreaseIndent();
+
+ pw.println("HardwareList:");
+ pw.increaseIndent();
+ for (TvInputHardwareInfo tvInputHardwareInfo : mHardwareList) {
+ pw.println(tvInputHardwareInfo);
+ }
+ pw.decreaseIndent();
+
+ pw.println("HdmiDeviceList:");
+ pw.increaseIndent();
+ for (HdmiDeviceInfo hdmiDeviceInfo : mHdmiDeviceList) {
+ pw.println(hdmiDeviceInfo);
+ }
+ pw.decreaseIndent();
+
+ pw.println("HardwareInputMap: TvInputId-> DeviceId");
+ pw.increaseIndent();
+ for (int i = 0 ; i < mHardwareInputIdMap.size(); i++) {
+ int deviceId = mHardwareInputIdMap.keyAt(i);
+ String tvInputId = mHardwareInputIdMap.valueAt(i);
+ pw.println(deviceId + ": " + tvInputId);
+ }
+ pw.decreaseIndent();
+
+ pw.println("HdmiInputIdMap: TvInputId -> HDMI Address");
+ pw.increaseIndent();
+ for (int i = 0; i < mHdmiInputIdMap.size(); i++) {
+ int hdmiAddress = mHdmiInputIdMap.keyAt(i);
+ String tvInputId = mHdmiInputIdMap.valueAt(i);
+ pw.println(hdmiAddress + ": " + tvInputId);
+ }
+ pw.decreaseIndent();
+
+ pw.println("InputMap: inputId -> TvInputInfo");
+ pw.increaseIndent();
+ for(Map.Entry<String, TvInputInfo> entry : mInputMap.entrySet()) {
+ pw.println(entry.getKey() + ": " + entry.getValue());
+ }
+ pw.decreaseIndent();
+ pw.decreaseIndent();
+ }
+ }
+
private class Connection implements IBinder.DeathRecipient {
private final TvInputHardwareInfo mHardwareInfo;
private TvInputInfo mInfo;
resetLocked(null, null, null, null, null);
}
}
+
+ public String toString() {
+ StringBuilder s = new StringBuilder();
+ s.append("Connection {HardwareInfo: ").append(mHardwareInfo.toString()).append(" ");
+ s.append("TvInputInfo: ").append(mInfo).append(" ");
+ s.append("callback: ").append(mCallback).append(" ");
+ if (mConfigs != null) {
+ for (int i = 0; i < mConfigs.length; i++) {
+ s.append("Config[").append(i).append("]: ").append(mConfigs[i].toString())
+ .append(" ");
+ }
+ } else {
+ s.append("Configs: ").append(mConfigs).append(" ");
+ }
+ s.append("CallingUid: ").append(mCallingUid).append(" ");
+ s.append("ResolvedUserId: ").append(mResolvedUserId).append(" ");
+ s.append("}");
+ return s.toString();
+ }
}
private class TvInputHardwareImpl extends ITvInputHardware.Stub {