android怎么设置当前的系统音量

android怎么设置当前的系统音量,第1张

获取系统音量

通过程序获取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中读取音频文件的所有信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9441279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存