當前位置:編程學習大全網 - 編程語言 - 關於android中RingtoneManager的問題

關於android中RingtoneManager的問題

RingtoneManager是android的鈴聲管理器。

具體實現代碼:

package rocka.media.ringtong;

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.view.View.OnClickListener;

import android.widget.Button;

public class Media_RingTongActivity extends Activity {

//定義三個按鈕

private Button mRingtongButton;

private Button mAlarmButton;

private Button mNotificationButton;

//定義類型

private static final int RingtongButton=0;

private static final int AlarmButton=1;

private static final int NotificationButton=2;

//鈴聲文件夾

private String strRingtongFolder="/sdcard/media/ringtones";

private String strAlarmFolder="/sdcard/media/alarms";

private String strNotificationFolder="/sdcard/media/notifications";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mRingtongButton=(Button)findViewById(R.id.myRingtongButton);

mRingtongButton.setOnClickListener(new myRingtongButtonListener());

mAlarmButton=(Button)findViewById(R.id.myAlarmButton);

mAlarmButton.setOnClickListener(new myAlarmButtonListener());

mNotificationButton=(Button)findViewById(R.id.myNotificationButton);

mNotificationButton.setOnClickListener(new myNotificationButtonListener());

}

//設置來電鈴聲監聽器

private class myRingtongButtonListener implements OnClickListener{

@Override

public void onClick(View v) {

if(isFolder(strRingtongFolder)){

//打開系統鈴聲設置

Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, true);

//類型為來電ringtong

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);

//設置顯示的題目

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置來電的鈴聲");

//當設置完成之後返回到當前的activity

startActivityForResult(intent, RingtongButton);

}

}

}

//設置鬧鐘鈴聲監聽器

private class myAlarmButtonListener implements OnClickListener{

@Override

public void onClick(View v) {

if(isFolder(strAlarmFolder)){

Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置鬧鈴鈴聲");

startActivityForResult(intent, AlarmButton);

}

}

}

//設置通知鈴聲監聽器

private class myNotificationButtonListener implements OnClickListener{

@Override

public void onClick(View v) {

if(isFolder(strNotificationFolder)){

Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);

intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置通知鈴聲");

startActivityForResult(intent, NotificationButton);

}

}

}

//檢查是否存在指定的文件夾,如果不存在就創建

private boolean isFolder(String strFolder){

boolean tmp = false;

File f1 = new File(strFolder);

if (!f1.exists())

{

if (f1.mkdirs())

{

tmp = true;

}

else

{

tmp = false;

}

}

else

{

tmp = true;

}

return tmp;

}

//設置鈴聲之後的回調函數

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(resultCode!=RESULT_OK){

return;

}

switch(requestCode){

case RingtongButton:

try {

//得到選擇的鈴聲

Uri pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

//將選擇的鈴聲選擇成默認

if(pickedUri!=null){

RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_RINGTONE, pickedUri);

}

} catch (Exception e) {

e.printStackTrace();

}

break;

case AlarmButton:

try {

//得到選擇的鈴聲

Uri pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

//將我們選擇的鈴聲選擇成默認

if(pickedUri!=null){

RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_ALARM, pickedUri);

}

} catch (Exception e) {

e.printStackTrace();

}

break;

case NotificationButton:

try {

//得到選擇的鈴聲

pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

//將選擇的鈴聲選擇成默認

if(pickedUri!=null){

RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);

}

} catch (Exception e) {

e.printStackTrace();

}

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

}

代碼說明:

1.布局文件就是三個按鈕。

2.在真機測試了壹下,可以運行,在模擬器測試要註意了,每次把音頻文件push到sdcard中得時候,必須重啟模擬器,模擬器才會應用設置,不然是檢索不到的。

3.系統的原始聲音存放在/system/media/audio/文件中 。

4.最後壹點不要忘記給應用程序加權限了:

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

  • 上一篇:Mam編程
  • 下一篇:2歲男童興趣班累成禿頭!我們該拿興趣班怎麽辦?
  • copyright 2024編程學習大全網