通过程序获取android系统手机的铃声和音量。同样,设置铃声和音量的方法也很简单!
设置音量的方法也很简单,AudioManager提供了方法:
publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到。
JAVA代码:
AudioManager mAudioManager = (AudioManager) getSystemService(ContextAUDIO_SERVICE);
//通话音量
int max = mAudioManagergetStreamMaxVolume( AudioManagerSTREAM_VOICE_CALL );
int current = mAudioManagergetStreamVolume( AudioManagerSTREAM_VOICE_CALL );
Logd(“VIOCE_CALL”, “max : ” + max + ” current : ” + current);
//系统音量
max = mAudioManagergetStreamMaxVolume( AudioManagerSTREAM_SYSTEM );
current = mAudioManagergetStreamVolume( AudioManagerSTREAM_SYSTEM );
Logd(“SYSTEM”, “max : ” + max + ” current : ” + current);
//铃声音量
max = mAudioManagergetStreamMaxVolume( AudioManagerSTREAM_RING );
current = mAudioManagergetStreamVolume( AudioManagerSTREAM_RING );
Logd(“RING”, “max : ” + max + ” current : ” + current);
//音乐音量
max = mAudioManagergetStreamMaxVolume( AudioManagerSTREAM_MUSIC );
current = mAudioManagergetStreamVolume( AudioManagerSTREAM_MUSIC );
Logd(“MUSIC”, “max : ” + max + ” current : ” + current);
//提示声音音量
max = mAudioManagergetStreamMaxVolume( AudioManagerSTREAM_ALARM );
current = mAudioManagergetStreamVolume( AudioManagerSTREAM_ALARM );
Logd(“ALARM”, “max : ” + max + ” current : ” + current);
ps:
游戏过程中只允许调整多媒体音量,而不允许调整通话音量。
setVolumeControlStream(AudioManagerSTREAM_MUSIC);
长时间不动,不允许黑屏,ViewsetKeepScreenOn(true);
估计manifest文件中需要注册权限吧
调节媒体音量
AudioManager audio = (AudioManager) getSystemService(ServiceAUDIO_SERVICE);
重写 Activity 的 onKeyDown 方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEventKEYCODE_VOLUME_UP:
audioadjustStreamVolume(
AudioManagerSTREAM_MUSIC,
AudioManagerADJUST_RAISE,
AudioManagerFLAG_PLAY_SOUND | AudioManagerFLAG_SHOW_UI);
return true;
case KeyEventKEYCODE_VOLUME_DOWN:
audioadjustStreamVolume(
AudioManagerSTREAM_MUSIC,
AudioManagerADJUST_LOWER,
AudioManagerFLAG_PLAY_SOUND | AudioManagerFLAG_SHOW_UI);
return true;
default:
break;
}
return superonKeyDown(keyCode, event);
}
把文件放在res/raw下,程序运行时把它释放到指定目录,代码如下:(供楼主参考)
private final String DATABASE_PATH = androidosEnvironmentgetExternalStorageDirectory()getAbsolutePath() + "/db_exam";
private final String DATABASE_FILENAME = "teldb";
public void extractDBFileFromRes(){
try {
String dbFileName = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!direxists()){
dirmkdir();
Logi("SQLite", "dir made:" + DATABASE_PATH);
} else {
Logi("SQLite", "dir exist:" + DATABASE_PATH);
}
try {
//如果数据库已经在SD卡的目录下存在,那么不需要重新创建,否则创建文件,并拷贝/res/raw下面的数据库文件
if (!(new File(dbFileName)exists())){
Logi("SQLite", dbFileName + ":file not exist");
//res/raw数据库作为输出流
InputStream inputStream = thisgetResources()openRawResource(Rrawtel);
//测试
int size = inputStreamavailable();
Logi("SQLite", "DATABASE_SIZE:" + 1);
Logi("SQLite", "count:" + 0);
//用于存放数据库信息的数据流
FileOutputStream fileOutputStream = new FileOutputStream(dbFileName);
byte[] buffer = new byte[8192];
int count = 0;
Logi("SQLite", "count:" + count);
//把数据写入SD卡目录下
while ((count = inputStreamread(buffer)) > 0 ) {
fileOutputStreamwrite(buffer, 0, count);
}
fileOutputStreamflush();
fileOutputStreamclose();
inputStreamclose();
}
} catch (FileNotFoundException e) {
Loge("Database", "File not found");
eprintStackTrace();
}
} catch (IOException e) {
Loge("Database", "IO exception");
eprintStackTrace();
}
}
Cursor mCursor = null;
String[] mAudiocols = new String[] {
MediaStoreAudioMediaTITLE,
MediaStoreAudioMediaDURATION,
MediaStoreAudioMediaARTIST,
MediaStoreAudioMedia_ID,
MediaStoreAudioMediaSIZE,
MediaStoreAudioMediaDATA,
MediaStoreAudioMediaDISPLAY_NAME,
MediaStoreAudioMediaBOOKMARK,
MediaStoreAudioMediaALBUM
};
mCursor =getContentResolver()query(MediaStoreAudioMediaEXTERNAL_CONTENT_URI,mAudiocols,"is_music=1",null,MediaStoreAudioMediaTITLE);
mTotalFiles = mCursorgetCount();
while(mCurrentPos < mTotalFiles){
mCurrentPos++;
mCursormoveToPosition(mCurrentPos);
mCursorgetColumnIndexOrThrow(MediaStoreAudioMediaTITLE));
}
具体没看过,大概流程:
client端的AudioSystem中调用getParameters,调用到IAudioFlinger,然后调用到libs下的AudioFlinger::getParameters,再下去就是要看每个系统了,我们是自己的硬件系统,所以无法给你更多的提示。
Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放、暂停、停止、和重复播放等方法。该类位于androidmedia包下,详见API文档。其实除了这个类还有一个音乐播放类那就是SoundPool,这两个类各有不同分析一下便于大家理解
MediaPlayer:
此类适合播放较大文件,此类文件应该存储在SD卡上,而不是在资源文件里,还有此类每次只能播放一个音频文件。
此类用法如下:
1、从资源文件中播放
MediaPlayer player = new MediaPlayercreate(this,Rrawtest);
playerstare();
2、从文件系统播放
MediaPlayer player = new MediaPlayer();
String path = "/sdcard/testmp3";
playersetDataSource(path);
playerprepare();
playerstart();
3、从网络播放
(1)通过URI的方式:
String path=">
以上就是关于android怎么设置当前的系统音量全部的内容,包括:android怎么设置当前的系统音量、android里如何解析音频文件获取标题、专辑、文件名、艺术家、如何在android中读取音频文件的所有信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)