1. 程式人生 > >關於andorid播放內部鈴聲和震動的簡單介紹

關於andorid播放內部鈴聲和震動的簡單介紹

手機震動提示

關於Android裝置震動的情況有一個內部類 Vibrator
private Vibrator vibrator; //定義一個內部類

將需要播放的檔案放置在相關的資料夾下面,例如下面這個我將danger.mp3存放在assets這個資料夾下面
這裡寫圖片描述
接下來就是進行程式碼控制了

 bt_getBatter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrator = (Vibrator)getApplicationContext().getSystemService(VIBRATOR_SERVICE);
                // 等待3秒,震動3秒,從第0個索引開始,一直迴圈
vibrator.vibrate(new long[]{500, 500}, 0); isvibrator = !isvibrator; if (isvibrator){ //判斷為 boolean值,使用者開關播放的 vibrator.cancel(); player.stop();//這個是鈴聲停止的,先不用看 }else { playRing();//這個是鈴聲播放的,暫時不用看
} } });

解釋下上面的程式碼
vibrator = (Vibrator)getApplicationContext().getSystemService(VIBRATOR_SERVICE);是指拿到這個可以震動的服務
vibrator.vibrate(new long[]{500, 500}, 0);指的是等待300毫秒,震動300毫秒,一直迴圈下去,執行到這裡,如果裝置有這個模組就會間隔性的震動
vibrator.cancel();是停止震動的藉口,第二次點選根據判斷標誌就可以停止震動

手機響鈴提示

和裝置震動一樣,這個也是有系統內部提供的類MediaPlayer

    private MediaPlayer playRing() {

        try {
            player = new MediaPlayer();
            assetManager = getAssets();
            AssetFileDescriptor fileDescriptor = assetManager.openFd("danger.mp3");
            player.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(),
                    fileDescriptor.getStartOffset());
            player.prepare();
            player.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return player;
    }

呼叫這個方法就是載入資原始檔下面的檔案資源
player.stop();這個就會停止當前的播放

播放系統自帶的,例如電話鈴聲

    public  void PlaySound(final Context context) {

        Log.e("ee", "正在響鈴");
        // 使用來電鈴聲的鈴聲路徑
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        // 如果為空,才構造,不為空,說明之前有構造過
        if(mMediaPlayer == null)
            mMediaPlayer = new MediaPlayer();
        try {
            mMediaPlayer.setDataSource(context, uri);
            mMediaPlayer.setLooping(true); //迴圈播放
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }