Android4: HDMI system in ICS
Android4.0 frameworkのデフォルトではhdmi、ワークフローがサポートされています.
HDMI状態が変化するとdriverはUevent“DEVCATH=/devices/virtual/switch/HDmi”を通じてシステムに報告する
-->
システムは、PhoneWindowManagerでUeventObserverからステータスを取得し、送信します.
Intent intent = new Intent(ACTION_HDMI_PLUGGED); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.putExtra(EXTRA_HDMI_PLUGGED_STATE, plugged); mContext.sendStickyBroadcast(intent);
その他のアプリケーションへ
-->
アプリケーションでbroadcast ACTIONを受信するHDMI_PLUGGED対応処理
では、Hdmiシステムをandroidに一致させるにはどうすればいいのでしょうか.
1) kernel
Hdmi driverでswtichノードを作成する必要があります.
/sys/class/switch/hdmi/name
/sys/class/switch/hdmi/state
2)frameworkで
処理モード切替、WindowManagerPolicyを送信する.ACTION_HDMI_PLUGGED
3)appで
処理broadcast WindowManagerPolicy.ACTION_HDMI_PLUGGED
HDMI状態が変化するとdriverはUevent“DEVCATH=/devices/virtual/switch/HDmi”を通じてシステムに報告する
-->
システムは、PhoneWindowManagerでUeventObserverからステータスを取得し、送信します.
Intent intent = new Intent(ACTION_HDMI_PLUGGED); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.putExtra(EXTRA_HDMI_PLUGGED_STATE, plugged); mContext.sendStickyBroadcast(intent);
その他のアプリケーションへ
-->
アプリケーションでbroadcast ACTIONを受信するHDMI_PLUGGED対応処理
では、Hdmiシステムをandroidに一致させるにはどうすればいいのでしょうか.
1) kernel
Hdmi driverでswtichノードを作成する必要があります.
/sys/class/switch/hdmi/name
/sys/class/switch/hdmi/state
static struct switch_dev sdev = {
.name = "hdmi",
};
// driver register
switch_dev_register(&sdev);
// hdmi plugin
switch_set_state(&sdev, 1);
// hdmi unplug
switch_set_state(&sdev, 0);
2)frameworkで
処理モード切替、WindowManagerPolicyを送信する.ACTION_HDMI_PLUGGED
3)appで
処理broadcast WindowManagerPolicy.ACTION_HDMI_PLUGGED