最近はエラーコードの解説ばかり載せてたらアクセスが無い無い。
そんな訳で久々にコードを書きます。
今日はActivityからIntentを発行して着信音を取得します。
そしてそれをアプリ内で使おうって感じで。
Ear Alarmでも使ってますので、ダウンロードして使用感を確認して下さい。
ではコードへ
MainActivity.java
/** * @author dommy* @version 1.0.0 written for blog.shonanshachu.com on 2012-02-25 */ public class MainActivity extends Activity { private static final int REQUEST_CODE_RINGTONE = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 着信音の選択ボタンにOnClickListenerを付ける ((Button) findViewById(R.id.button)).setOnClickListener(onClickChangeRingtone); } /** 着信音の選択が終わった後に来る * EXTRA_RINGTONE_PICKED_URIでUriが取得出来るので、それを保存する */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 戻り値が大丈夫 if (requestCode == REQUEST_CODE_RINGTONE && resultCode == RESULT_OK) { // RingtoneのURI取得 Uri uri = data .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); // アプリ設定に着信音のINDEXを保存する SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE) .edit(); RingtoneManager rm = new RingtoneManager(this); rm.setType(RingtoneManager.TYPE_ALARM); editor.putInt("ringtone_index", rm.getRingtonePosition(uri)); editor.commit(); } } /** 着信音のUriを取得するために別口で書いてあるメソッドです。 * 着信音の設定はSharedPreferencesに * ringtone_indexので保存てあります。 * (増えたらどうなるとか気にしない) * * @return Uri 着信音のUri */ private Uri getRingtoneUri() { SharedPreferences prefs = getPreferences(MODE_PRIVATE); int ringtoneIndex = prefs.getInt("ringtone_index", -1); Uri uri = null; // 着信音の設定がない場合 if (ringtoneIndex == -1) { // アラーム音の取得 uri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); if (uri == null) { // アラーム音が無ければ通知音を使う uri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION); if (uri == null) { // 通知音も無ければ着信音を使う uri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE); } } } // 着信音の設定がある場合 else { RingtoneManager rm = new RingtoneManager(this); rm.setType(RingtoneManager.TYPE_ALARM); uri = rm.getRingtoneUri(ringtoneIndex); } return uri; } /** 着信音変更ボタンが押された時の処理 * 新しいIntentを発行して着信音選択Activityへ遷移する */ private OnClickListener onClickChangeRingtone = new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM); startActivityForResult(intent, REQUEST_CODE_RINGTONE); } }; }
0 件のコメント:
コメントを投稿