Media開発の着メロ設定(RingtoneManager)
7404 ワード
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 {
//
Uri 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.レイアウトファイルは3つのボタンで、何も言うことはありません.2.本物のゲセウサギでテストして、実行できます.シミュレータでテストする子供靴に注意してください.オーディオファイルpushをsdcardに入れるたびに、シミュレータを再起動しなければなりません.シミュレータは設定を適用します.そうしないと検索できませんよ.この点は後で気づきました.3.システムのオリジナルサウンドを/system/media/audio/ファイルに保存
4.最後に、アプリケーションに権限を与えることを忘れないでください.