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

2024-08-23 11:58

本文主要是介绍Android添加USB连接提示音(SettingsProvider,PowerUI),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在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.     编写播放提示音的方法
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 work
if(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’ttry{Thread.sleep(1000);vibrator.cancel();
}catch(Exception e){e.printStackTrace();
}
}
}
}





这篇关于Android添加USB连接提示音(SettingsProvider,PowerUI)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099320

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(