android系统设置在哪里,android-如何在系统settings里添加设置选项

版本:2.3.1

目的:在通话设置菜单下,添加一dect设置菜单,里面再添加一checkBOxPreference

来使能硬件模块。

-------------------------

目前做的项目,需要在系统settings里面添加一选项来使能硬件模块,里面涉及到的preference知识,请网上了解,这里记录下方法。

1,settings 应用一般在 目录:\packages\apps\Settings,我们先找到通话设置的布局位置,看看它在那个包路径下,进入\packages\apps\Settings\res\xml,打开settings.xml文件:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

android:key="call_settings"

settings:icon="@drawable/ic_settings_call"

android:title="@string/call_settings_title">

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

android:targetPackage="com.android.phone"

android:targetClass="com.android.phone.CallFeaturesSetting" />

android:targetPackage="com.android.phone"

android:targetClass="com.android.phone.CallFeaturesSetting"

targetPackage:表示包名,根据此我们可以找到通话设置的路径。

targetClass:表示此布局文件被那个类所引用,根据此类,我们可以知道在那个文件里面管理我们的通话设置功能。

2.根据包名,我们可以看到在\packages\apps\Phone 目录下,进入\res\xml目录下

找到通话布局文件:call_feature_setting.xml,根据类名,很容易找到布局文件。

里面内容如下:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

android:title="@string/other_settings"

android:persistent="false" />

android:key="dect_settings"

android:title="@string/dect_module_title"

android:summary="@string/dect_module_title" >

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

android:targetPackage="com.android.phone"

android:targetClass="com.android.phone.DectSettings" />

android:key="button_auto_retry_key"

android:title="@string/auto_retry_mode_title"

android:persistent="false"

android:summary="@string/auto_retry_mode_summary"/>

Dect setting 就是新添加进入的设置菜单,我们的原则尽量不大量修改源码,所以添加一个PreferenceScreen,新增一个类文件来管理DECt菜单选项。

android:targetPackage="com.android.phone"

android:targetClass="com.android.phone.DectSettings"

我们指明了包名,类名后,因这是个activity,所以我们需要到Phone目录下修改

AndroidManifest.xml文件,指明启动的activity的类名.

Java代码

0818b9ca8b590ca3270a3433284dd417.png

android:label="@string/cdma_options">

android:label="@string/dect_module_title">

3.修改好后,我们必须在此activity里添加preference布局文件。

在此目录Phone\res\xml下,新增dect_settings.xml

Java代码

0818b9ca8b590ca3270a3433284dd417.png

android:title="@string/dect_module_title">

android:key="button_dect_module_key"

android:title="@string/dect_module_title"

android:defaultValue="true"

android:summaryOn="@string/dect_module_start"

android:summaryOff="@string/dect_module_stop"

/>

好了,总体布局已经完成

4.在\packages\apps\Phone\src\com\android\phone目录下

新增DectSettings.java文件

加载布局文件:

//dect xml

addPreferencesFromResource(R.xml.dect_settings);

里面涉及到的MidPhoneServce服务,是自己添加的,主要通过此服务的AIDL接口跟硬件打交道。想了解系统服务,请网上查找资料。

源码如下:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

package com.android.phone;

import android.content.DialogInterface;

import android.os.AsyncResult;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.preference.CheckBoxPreference;

import android.preference.Preference;

import android.preference.PreferenceActivity;

import android.preference.PreferenceScreen;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.content.pm.ActivityInfo;

import android.content.pm.PackageManager;

import android.content.pm.ResolveInfo;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.content.Context;

import com.android.phone.R;

import android.os.IMidPhoneService;

import android.os.RemoteException;

import android.os.ServiceManager;

import android.provider.Settings;

public class DectSettings extends PreferenceActivity {

private static final String TAG = "DectSettings";

private static final String BUTTON_DECT_KEY  = "button_dect_module_key";

private CheckBoxPreference mButtonDect;

public IMidPhoneService midphoneservice = null;

@Override

protected void onCreate(Bundle icicle) {

super.onCreate(icicle);

//dect xml

addPreferencesFromResource(R.xml.dect_settings);

mButtonDect = (CheckBoxPreference)findPreference(BUTTON_DECT_KEY);

mButtonDect.setPersistent(false);

if(mButtonDect != null) {

int dect_state = Settings.System.getInt(

getContentResolver(),Settings.System.DECT_SAVED_STATE, 1);

mButtonDect.setChecked( dect_state!= 0);

Settings.System.putInt(getContentResolver(),

Settings.System.DECT_SAVED_STATE,dect_state);

Log.e(TAG,"settings:------------->" + dect_state);

}

}

@Override

public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {

if (preference == mButtonDect ) {

int dect = mButtonDect.isChecked() ? 1 : 0;

boolean state;

if(dect == 1)

state = true;

else

state = false;

try{

midphoneservice = IMidPhoneService.Stub.asInterface(ServiceManager.getService("midphone"));

Settings.System.putInt(getContentResolver(),

Settings.System.DECT_SAVED_STATE,dect);

midphoneservice.setDectEnabled(state);

Log.e(TAG,"settings:------------->" + dect);

} catch (RemoteException e) {

e.printStackTrace();

}

return true;

}

return false;

}

@Override

protected void onResume() {

super.onResume();

if (mButtonDect != null) {

mButtonDect.setChecked(Settings.System.getInt(

getContentResolver(),

Settings.System.DECT_SAVED_STATE, 1) != 0);

}

}

}

5.编译,烧录。

相对参考:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Unity中设置Android系统的麦克风需要在Unity的Player Settings中进行设置。具体步骤如下: 1. 打开Unity编辑器,选择File -> Build Settings打开Build Settings对话框。 2. 在对话框中选择Android平台,点击Player Settings按钮打开Player Settings面板。 3. 在Player Settings面板中选择Android设置,然后在Other Settings选项卡中找到Microphone选项,将其勾选。 4. 然后在录音时需要动态申请录音权限,可以使用Unity的AndroidJavaClass类来完成。例如: ``` AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext"); AndroidJavaClass Manifest = new AndroidJavaClass("android.Manifest"); string[] permissions = new string[1]; permissions[0] = Manifest.GetStatic<string>("permission.RECORD_AUDIO"); AndroidJavaObject permissionObj = new AndroidJavaObject("java.lang.String", permissions[0]); AndroidJavaObject permissionChecker = context.Call<AndroidJavaObject>("checkSelfPermission", permissionObj); if (permissionChecker.Call<int>("intValue") != 0) { AndroidJavaObject permissionObjArray = new AndroidJavaObject("java.lang.String[]", permissions); currentActivity.Call("requestPermissions", permissionObjArray, 1); } ``` 以上是在Unity中设置Android系统的麦克风以及动态申请录音权限的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值