Android開発-着信音の選択と再生-

Androidで着信音の選択と取得と再生と

着信音を司るクラスがRingtoneManagerやRingtoneだっていうのは
楽勝でわかったけど、
どの着信音を選択したかを取得するかが難しかった

でもこれを読んだらぜんぜん簡単だった。
http://groups.google.co.jp/group/android-developers/browse_thread/thread/7820575ad844377f

作ったソースを晒します。

package com.tomorrowkey.android.test;

import android.app.Activity;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    private final static int REQUEST_CODE_RINGTONE_PICKER = 1;
    
    Ringtone ringtone;
    Button btnPlay;
    Button btnStop;
    Button btnSelectRingtone;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //再生ボタン
        btnPlay = (Button)findViewById(R.id.Button01);
        btnPlay.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                ringtone.play();
            }
        });
        
        //停止ボタン
        btnStop = (Button)findViewById(R.id.Button02);
        btnStop.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                ringtone.stop();
            }
        });
        
        //着信音選択ボタン
        btnSelectRingtone = (Button)findViewById(R.id.Button03);
        btnSelectRingtone.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
                startActivityForResult(intent, REQUEST_CODE_RINGTONE_PICKER);
            }
        });
        
        //通常の着信音を選択する
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        ringtone = RingtoneManager.getRingtone(this, uri);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE_RINGTONE_PICKER ){
            if(resultCode == RESULT_OK){
                Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                ringtone = RingtoneManager.getRingtone(this, uri);
            }
        }
    }
}