Android添加USB连接提示音(SettingsProvider,PowerUI)

来源:互联网 发布:平面设计好还是美工好 编辑:程序博客网 时间:2024/06/08 16:56
在framework/base/package/SettingsProvider/src/DatabaseHelper.java的方法loadGlobalSettings中添加如下内容:
loadStringSetting(stmt,Settings.Global.USB_BATTERY_SOUND,R.string.def_usb_battery_sound);

参数stmt定义和初始化

SQLiteStatement stmt=null;stmt=db.compileStatement(“INSERT OR IGNORE INTO global(name,value)”+” VALUES(?,?);”);

loadStringSettingàloadSetting

private void loadSetting(SQLiteStatement stmt,String key,Object value){stmt.bindString(1,key);stmt.bindString(2,value.toString());stmt.execute();}//这个方法实际上就是把数据存入数据库的操作

SQLiteStatement的使用见https://liuzhichao.com/p/1664.html


参数Settings.Gloval.USB_BATTERY_SOUND是在framework/base/core/java/android/provider/Settings里面添加的URI

/** *URI for the charge sound file. *@hide(不对外部开发) */public static final String USB_BATTERY_SOUND=”usb_battery_sound”;


参数R.string.def_usb_battery_sound是在framework/base/package/SettingsProvider/res/value/defaults.xml中定义的文件路径,如下
<string name=”def_usb_battery_sound” translatable=”false”>/system/media/audio/notifications/Hs_in_charger.mp3</string>

该文件是通过mk文件拷贝到相应路径下的,framework/base/data/sounds/AllAudio.mk中添加

$(LOCAL_PATH)/notifications/Hs_in_charger.mp3:system/media/audio/notifications/Hs_in_charger.mp3 \

首先要在路径$(LOCAL_PATH)/notifications/下放入文件Hs_in_charger.mp3

播放提示音添加的代码,位置是framework/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java

1.      导入用到的类

import android.media.MediaPlayer;import android.media.AudioManager;import android.net.Uri;import android.os.Vibrator;

2.      设置振动间隔

private static final long[] sVibratePattern={50,200};


3.      在onReceive方法中添加

if(plugged && !oldPlugged){    playSoundbattery();//判断当前USB是否插入,如果插入,播放提示音}

4.     编写播放提示音的方法
4.private void playSoundbattery(){MediaPlayer player=new MeidaPlayer();final ContentResolver cr=mContext.getContentResolver();final String mSoundPath=Settings.Global.getString(cr,Settings.Global.USB_BATTERY_SOUND);//得到之前载入到数据库的文件路径       if(mSoundPath!=null){           final Uri soundUri=Uri.parse(“file://”+mSoundPath);           try{               player.setDataSource(mContext,soundUri);}catch(Exception e){    e.printStackTrace();}}final AudioManager audioManager=(AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);if(audioManager.getStreamVolume(AudioManager.STREAN_RING)!=0){    player.setAudioStreamType(AudioManager.STREAM_RING);//设置音量try{    player.prepare();}catch(Exception e){    e.printStackTrace();}player.start();}//only in silent mode vibrator workif(audioManager.getRingerMode()==AudioManager.RINGER_MODE_SILENT||    audioManager.getRingerMode()==AudioManager.RINGER_MODE_VIBRATE){        Vibrator vibrator=(Vibrator)mContext.getSystemService(Context.VIBRATOR_SERVICE);        if(vibrator!=null){            vibrator.vibrate(sVibratePattern,-1);            //Vibrator shold shutdown at onStop,but if it won’t            try{                Thread.sleep(1000);                vibrator.cancel();}catch(Exception e){    e.printStackTrace();}}}}





阅读全文
0 0
原创粉丝点击