android 播放音頻的相關操作(One)

1.將String 路徑解析成Uri的方法:

public Uri queryUriforAudio(String path)
    {
        File file = new File(path);
        Log.i("TEST","-------->path: "+path);
        final String where = MediaStore.Audio.Media.DATA + "='"+file.getAbsolutePath()+"'";
        Cursor cursor = this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, where, null, null);
        if (cursor == null) {
            Log.d("uritest", "queryUriforAudio: uri爲空 1");
            return null;
        }
        int id = -1;
        if (cursor != null) {
            cursor.moveToFirst();
            if (!cursor.isAfterLast()) {
                id = cursor.getInt(0);
            }
            cursor.close();
        }
        if(id==-1)
        {
            Log.d("uritest", "queryUriforAudio: uri爲空 2");
            return null;
        }
        return Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, String.valueOf(id));
    }

 

2.播放音頻:

 /**
     * play default notification sound
     *
     * @return MediaPlayer object
     */
    @Override
    public void playNotificationSound() {
        uriMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        ringMedia = RingtoneManager.getRingtone(context, uriMedia);
        ringMedia.play();
    }

    /**
     * play default ring sound
     *
     * @return MediaPlayer object
     */
    @Override
    public void playDefaultRingSound() {
        uriCallMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        ringCallMedia = RingtoneManager.getRingtone(context, uriCallMedia);
        ringCallMedia.play();
    }
    /**
     * play specific ring sound
     *
     * @return MediaPlayer object
     */
    @Override
    public void playRingSound(Uri ringtongUri,int duratoinMs) {
        cancelTimer();
        mTimer = new Timer();
        initialTimer(duratoinMs);
        mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(context,ringtongUri);
            mediaPlayer.prepare();
            mediaPlayer.setLooping(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        mediaPlayer.start();
        isPlaying = true;
    }
    /**
     * play default alarm sound
     *
     * @return MediaPlayer object
     */
    @Override
    public void playDefaultAlarmSound() {
        uriAlarmMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        ringAlarmMedia = RingtoneManager.getRingtone(context, uriAlarmMedia);
        ringAlarmMedia.play();
    }

    /**
     * play specific alarm sound
     *
     * @return MediaPlayer object
     */
    @Override
    public void playAlarmSound(Uri ringtongUri,int duratoinMs){
        cancelTimer();
        mTimer = new Timer();
        initialTimer(duratoinMs);
        mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(context,ringtongUri);
            mediaPlayer.prepare();
            mediaPlayer.setLooping(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        mediaPlayer.start();
    }
    /**
     * stop notification sound
     */
    @Override
    public void stopNotificationSound() {
        if (ringMedia != null) {
            ringMedia.stop();
        }
    }


    /**
     * stop ring sound
     */
    @Override
    public void stopDefaultRingSound() {
        if (ringCallMedia != null) {
            ringCallMedia.stop();
        }
    }

    /**
     * stop alarm sound
     */
    @Override
    public void stopDefaultAlarmSound() {
        if (ringAlarmMedia != null) {
            ringAlarmMedia.stop();
        }
    }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章