Android添加USB连接提示音(SettingsProvider,PowerUI)
来源:互联网 发布:平面设计好还是美工好 编辑:程序博客网 时间:2024/06/08 16:56
在framework/base/package/SettingsProvider/src/DatabaseHelper.java的方法loadGlobalSettings中添加如下内容:
4. 编写播放提示音的方法
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”;
<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
- Android添加USB连接提示音(SettingsProvider,PowerUI)
- Android 6.0 Marshmallow SettingsProvider
- Android系统APP之SettingsProvider
- Android系统APP之SettingsProvider
- android ICS 4.0.3 tablet模式 插入usb线 不提示sd卡已连接 解决方案
- Android usb camera设备添加
- android 6.0 SystemUI源码分析(5)-PowerUI介绍
- Android学习——systemUIService 之PowerUI分析
- Android N SettingsProvider的数据保存
- android 监听USB连接状态
- Android 检测USB连接状态
- Android 显示usb连接图标
- android 监听USB连接状态
- android pc通过wifi调试手机(无需USB连接)
- PC通过USB连接Android通信(Socket)
- android usb otg模式转换成host模式(不使用otg线连接,只用普通usb四线连接)
- Vmware提示: 主机已禁用 usb 设备连接
- Eclipse添加Android语法提示
- leetcode two-sum
- 求两个字符串的最长公共连续子序列的长度
- 2015年京胜杯删数!删数
- fedora 14 root登陆修改方法
- linux-shell脚本编程基本用法1
- Android添加USB连接提示音(SettingsProvider,PowerUI)
- Java -- 队列(模拟银行的排队办理业务)
- Python机器学习(03)
- MyEclipse中的web项目如何正确导入到Eclipse中运行
- 直线生成算法的实现:分别利用DDA算法、中点Bresenham算法和改进的Bresenham算法扫描转换直线段P1P2
- [YTU]_2907 (类重载实现矩阵加法)
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享
- 接口设计实现不同线程之间数据传递
- centos7安装putty