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.最後に、アプリケーションに権限を与えることを忘れないでください.