音频文件操作1(系统铃声)

来源:互联网 发布:pwp网络用语是什么意思 编辑:程序博客网 时间:2024/05/14 02:27

1,如何打开系统铃声库,选择铃声?

Intent i=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
   startActivityForResult(i, 0);

如上即可弹出一个铃声选择的Dialog

,我们选择了其中的某一个铃声后,如何知道把自己选择的铃声保存起来,以后使用了?

 

@Overrideprotected 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();