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

相关文章

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤