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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值