android 如何在setting中添加HDMI选项

1.如何添加hdmi选项图标

a).将显示在目录上的图标资源添加至/ics/packages/app/Settings/res/drawable-hdpi/和/ics/packages/app/Settings/res/drawable-mdpi/中。

b)./ics/packages/app/Settings/AndroidManifest.xml 中添加以下内容

   <activity android:name="HdmiSettings"

                android:label="@string/hdmi_settings"

                android:clearTaskOnLaunch="true"

                >

            <intent-filter>

                 <action android:name="android.intent.action.MAIN" />

                <action android:name="com.android.settings.HDMI_SETTINGS" />

                <action android:name="android.settings.HDMI_SETTINGS" />

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="android.intent.category.VOICE_LAUNCH" />

                <category android:name="com.android.settings.SHORTCUT" />

            </intent-filter>

     </activity>

c).添加相对应的字串和数组,在ics/packages/app/Settings/res/values/strings.xml中添加内容

           <!-- add the hdmi in setting interface by lorry-->

    <string name="hdmi_switch_title">HDMI</string>

    <string name="hdmi_switch_summary"></string>

    <string name="hdmi_mode_title">Hdmi Display Mode</string>

    <string name="hdmi_mode_summary">Please select the display mode you want to use</string>

    <string name="hdmi_settings">HDMI Setting</string>

           在ics/packages/app/Settings/res/values/arrays.xml中添加内容

 

           <!-- HDMI Mode settings.  add by lorry. -->

    <string-array name="hdmi_mode_entries">

        <item>1920x1080</item>

        <item>1280x720</item>

        <item>720x576</item>

        <item>720x480</item>

    </string-array>

    <string-array name="hdmi_mode_values">

        <item>0</item>

        <item>1</item>

        <item>2</item>

        <item>3</item>

    </string-array>

    <string-array name="hdmi_mode_summaries">

        <item>The current mode is 1920x1080 mode</item>

        <item>The current mode is 1280x720 mode</item>

        <item>The current mode is 720x576 mode</item>

        <item>The current mode is 720x480 mode</item>

    </string-array>

 d).如果对hdmi模块在布局方面有一些特别的要求,可以在res/layout/目录下添加对应的xml文件。

2.HDMI setting 格式设计

  /packages/apps/Settings/src/com/android/settings/目录下创建Hdmi_setting.java

  采用一个checkbox来设定HDMI的开关,采取一个列表来选择HDMI的参数模式。

  public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

              …

}

中添加以下内容,设定HDMI界面的模式风格

       ContentResolver resolver = getContentResolver();

  WindowManager=IWindowManager.Stub.asInterface(ServiceManager.getService("window"));

         addPreferencesFromResource(R.xml.hdmi_setting);

       mHdmiAccelerometer = (CheckBoxPreference) findPreference(KEY_HDMI_SWITCH);

       mHdmiAccelerometer.setOnPreferenceChangeListener(this);

     mHdmiModes = (ListPreference) findPreference(KEY_HDMI_ACCELEROMETER);

      mHdmiModes.setOnPreferenceChangeListener(this);


3.如何调用HdmiSettings

 

ics/packages/app/Settings/res/xml/setting.xml中添加以下内容

         <com.android.settings.IconPreferenceScreen

            settings:icon="@drawable/ic_settings_hdmi"

            android:title="@string/hdmi_settings">

            <intent

                android:action="android.intent.action.MAIN"

                android:targetPackage="com.android.settings"

                android:targetClass="com.android.settings.HdmiSettings" />

        </com.android.settings.IconPreferenceScreen>

4.如何保存当前的控件的值。

a). franeworks/base/core/java/android/provider/Setting.java中添加两个值的变量的定义

       public static final String HDMI_SETTINGS_STATUS = "hdmi_settings_status";

public static final String HDMI_SETTINGS_MODE = "hdmi_settings_mode";

并在SETTINGS_TO_BACKUP数组中添加这两个成员。

 

b).ics/frameworks/base/packages/SettingProvider/src/com/android/providers/settings

/DatabaseHelper.java 中添加以下语句

Loadsetting(stmt,settings.system.HDMI_SETTINGS_STATUS,0);

Loadsetting(stmt,settings.system.HDMI_SETTINGS_MODE,0);

5.如何调用hdmi脚本

 

a).build the hdmi lib

       pp1938hdmi代码移植,并添加android.mk文件,将该代码编译成一个动态的库,这样就可以在android中采取jni的模式来调用.

 

b).ics/frameworks/base/core/jni中创建一个android_setting_HdmiJNI.cpp并添加以下代码

static int JNICALL android_setting_HdmiJNI_RunHDMI(JNIEnv * env, jobject obj, jint opt)

{

             return run_hdmi(opt);

    }

static int JNICALL android_setting_HdmiJNI_ChangeHdmiMode(JNIEnv * env, jobject obj, jint opt)

        {

             LOGE("run hdmi function test \n");

             return change_hdmi_mode(opt);

        }

 

        static int JNICALL android_setting_HdmiJNI_StopHDMI(JNIEnv * env, jobject obj)

        {

             LOGE("stop hdmi function test\n");

             return stop_hdmi();

        }

 

        static int JNICALL android_setting_HdmiJNI_Hot_plug_detect(JNIEnv * env, jobject obj)

        {

             LOGE("hot plug detect function test\n");

             return hot_plug_detect();

        }

 

        static JNINativeMethod gMethods[] = {

                {"RunHDMI", "(I)I", (void *) android_setting_HdmiJNI_RunHDMI},

                {"ChangeHdmiMode", "(I)I", (void *) android_setting_HdmiJNI_ChangeHdmiMode},

                {"StopHDMI", "()I", (void *) android_setting_HdmiJNI_StopHDMI},

                {"Hot_plug_detect", "()I", (void *) android_setting_HdmiJNI_Hot_plug_detect},

        };

 

        int register_android_setting_HdmiJNI(JNIEnv * env)

        {

                return jniRegisterNativeMethods(env, "android/setting/HdmiJNI",gMethods, NELEM(gMethods));

        }

 

c)AndroidRuntime.cpp中添加extern int register_android_setting_HdmiJNI(JNIEnv* env);声明,并在数组gRegJNI中添加REG_JNI(register_android_setting_HdmiJNI),

 

d)修改android.mk文件,并添加相对应的路径包含,

 

e) ics/frameworks/base/core/java/android/setting路径下添加HdmiJNI.java文件

       并添加以下代码

 

package android.setting;

 

/** {@hide} */

public class HdmiJNI

{

        public HdmiJNI()

        {

        }

        public native int RunHDMI(int opt);

        public native int ChangeHdmiMode(int opt);

        public native int StopHDMI();

        public native int Hot_plug_detect();

 

}

 

 

f)ics/packages/apps/Settings/src/com/android/settings/HdmiSettings.java中添加

import android.setting.HdmiJNI;

import static android.provider.Settings.System.HDMI_SETTINGS_STATUS;

import static android.provider.Settings.System.HDMI_SETTINGS_MODE;


等并使用对用的函数来执行对应的操作,

 

注意:若出现无法识别以上的类和变量,请make update-api.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值