android-鈴聲的設定與播放

來源:互聯網
上載者:User
在android系統中,不同鈴聲存放的鈴聲路徑:
/system/media/audio/ringtones        來電鈴聲 /system/media/audio/notifications        簡訊通知鈴聲 /system/media/audio/alarms        鬧鐘鈴聲
鈴聲的設定:
import java.io.File;import android.app.Activity;import android.content.Intent;import android.media.RingtoneManager;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Activity01 extends Activity{/* 3個按鈕 */private Button mButtonRingtone;private Button mButtonAlarm;private Button mButtonNotification;/* 自訂的類型 */public static final int ButtonRingtone= 0;public static final int ButtonAlarm= 1;public static final int ButtonNotification= 2;/* 鈴聲檔案夾 */private String strRingtoneFolder = "/sdcard/music/ringtones";private String strAlarmFolder = "/sdcard/music/alarms";private String strNotificationFolder = "/sdcard/music/notifications";/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mButtonRingtone = (Button) findViewById(R.id.ButtonRingtone);mButtonAlarm = (Button) findViewById(R.id.ButtonAlarm);mButtonNotification = (Button) findViewById(R.id.ButtonNotification);/* 設定來電鈴聲 */mButtonRingtone.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strRingtoneFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//類型為來電RINGTONEintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);//設定顯示的titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定來電鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonRingtone);}}});/* 設定鬧鐘鈴聲 */mButtonAlarm.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strAlarmFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//設定鈴聲類型和titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定鬧鈴鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonAlarm);}}});/* 設定通知鈴聲 */mButtonNotification.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0){if (bFolder(strNotificationFolder)){//開啟系統鈴聲設定Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);//設定鈴聲類型和titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設定通知鈴聲");//當設定完成之後返回到當前的ActivitystartActivityForResult(intent, ButtonNotification);}}});}/* 當設定鈴聲之後的回呼函數 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data){// TODO Auto-generated method stubif (resultCode != RESULT_OK){return;}switch (requestCode){case ButtonRingtone:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_RINGTONE, pickedUri);}}catch (Exception e){}break;case ButtonAlarm:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_ALARM, pickedUri);}}catch (Exception e){}break;case ButtonNotification:try{//得到我們選擇的鈴聲Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);//將我們選擇的鈴聲設定成為預設if (pickedUri != null){RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);}}catch (Exception e){}break;}super.onActivityResult(requestCode, resultCode, data);}//檢測是否存在指定的檔案夾 //如果不存在則建立private boolean bFolder(String strFolder){boolean btmp = false;File f = new File(strFolder);if (!f.exists()){if (f.mkdirs()){btmp = true;}else{btmp = false;}}else{btmp = true;}return btmp;}}
鈴聲的播放:
  player = new MediaPlayer();      try{      player.setDataSource(context, pickUri);      }catch(Exception e){      e.printStackTrace();      }     final AudioManager  audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);     if(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0){         player.setAudioStreamType(AudioManager.STREAM_ALARM);         player.setLooping(true);         try {player.prepare();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}         player.start();    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.