1,如何打开系统铃声库,选择铃声?
Intent i=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
startActivityForResult(i, 0);
如上即可弹出一个铃声选择的Dialog
,我们选择了其中的某一个铃声后,如何知道把自己选择的铃声保存起来,以后使用了?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 0:
if (resultCode == RESULT_OK) {
Bundle b = data.getExtras();
Uri uri = (Uri) b.get("android.intent.extra.ringtone.PICKED_URI");
if(uri==null){
showToast("你没有选择铃声!");
return;}
if(uri.equals(android.provider.Settings.System.DEFAULT_RINGTONE_URI)){
Cursor cc=getContentResolver().query(uri, null, null, null, null);
if(cc.getCount()==0){
showToast("默认铃声为空!");
return;
}
cc.moveToFirst();
uri=Uri.parse(cc.getString(2));
}
//System.out.println(b.get("android.intent.extra.ringtone.PICKED_URI"));
Cursor c = getContentResolver().query(uri, null, null, null,
null);
System.out.println(Arrays.toString(c.getColumnNames()));
if(c.getCount()==0)return;
c.moveToFirst();
String music_data=c.getString(1);//这个为音乐文件的地址
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(music_data);
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
c.close();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
private void showToast(String str){
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
下边是我打印的cursor返回的的列数组:
[_id, _data, _display_name, _size, mime_type, date_added, date_modified, title, title_key, duration, artist_id, composer, album_id, track, year, is_ringtone, is_music, is_alarm, is_notification, is_podcast, bookmark, artist_id:1, artist_key, artist, album_id:1, album_key, album]
data就是歌曲的地址,我们需要的就是这个,display name是歌曲显示的名字,size是歌曲的大小。title是歌曲的名字。 举例说下,比如歌曲是abc.mp3 这个display那么就是abc.mp3 而起实际的名字是 朋友就是所谓的title了。
duration是歌曲的时间,毫秒值。。其他的看字面意思也很好理解的,需要啥就用撒
比如我执行如下的代码:
System.out.println(c.getString(1));
System.out.println(c.getString(2));
System.out.println(c.getString(3));
System.out.println(c.getString(7));
System.out.println(c.getString(9));
System.out.println(b .get("android.intent.extra.ringtone.PICKED_URI"));
结果为:
2,如何调整声音的大小,以及 如何静音
audiomanger=(AudioManager) getSystemService(Service.AUDIO_SERVICE); 获取音频管理
audiomanger.setStreamMute(AudioManager.STREAM_MUSIC, true) ; true静音,
audiomanger.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); 增大音量,带音量界面的
audiomanger.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI); 减小音量
3震动
需要的权限<uses-permission android:name="android.permission.VIBRATE"/>
Vibrator vibrator=(Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(1000);//振動時間為1秒
vibrator.vibrate(new long[]{200,500,800,1200}, 0);
//按數組的時間交替啟動,關閉振動,後邊的參數為啟動的數組下角標
vibrator.cancel();