4

必要な機能を備えたアプリケーションがあります。

ただし、特定の時間にトーストが表示され、トーストが表示されると同時に2回のビープ音を鳴らして、表示されているメッセージをユーザーに警告したいと思います。

Androidでサウンドを再生するための最善の方法や、アラートに使用するためにアクセスできるデフォルトのサウンドがあるかどうかはわかりません。

アップデート

メインのアクティビティファイルに次のコードがあります。

  public void playAlertTone(final Context context){
            Thread t = new Thread(){
                    public void run(){
                        MediaPlayer player = null;
                        int countBeep = 0;
                        while(countBeep<2){
                        player = MediaPlayer.create(context,R.raw.beep);
                        player.start();
                        countBeep+=1;
                        try {

                                        
                            Thread.sleep(player.getDuration()+100);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        }
                    }
                };
                t.start();   

            }

res/rawにbeepという名前のサウンドファイルがあります

2つが同時に発生するようにトーストが表示されるifステートメントでこのメソッドを呼び出すにはどうすればよいですか?

更新2:

これが私がアラートメソッドを呼び出そうとしているコードです:

  if (elapsedTime > hourAlert)
        {
            LayoutInflater inflater = getLayoutInflater();
            View layout = inflater.inflate(R.layout.toast_layout,
                                           (ViewGroup) findViewById(R.id.toast_layout_root));
            TextView text = (TextView) layout.findViewById(R.id.text);
            text.setText("HOUR PASSED");

            Toast toast = new Toast(getApplicationContext());
            toast.setGravity(Gravity.BOTTOM, 0, 160);
            toast.setDuration(Toast.LENGTH_LONG);
            toast.setView(layout);
            toast.show();
            playAlertTone(getApplicationContext()); // Edited here now call
4

3 に答える 3

5

プロジェクトのres/rawフォルダにオーディオファイルを置くことができます

スレッドでオーディオを再生します

public  void playAlertTone(final Context context){

      
    Thread t = new Thread(){
            public void run(){
                MediaPlayer player = null;
                int countBeep = 0;
                while(countBeep<2){
                player = MediaPlayer.create(context,R.raw.beep);
                player.start();
                countBeep+=1;
                try {
                                         
                                // 100 milisecond is duration gap between two beep
                    Thread.sleep(player.getDuration()+100);
                                       player.release();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                           

                }
            }
        };

        t.start();   
        
    }

//call it like this from your activity' any method



    if(myCondition){
    
    Toast.makeText(getApplicationContext(), text, duration).show();
    
    playAlertTone(getApplicationContext());
    
    
    }
于 2012-04-06T14:18:26.120 に答える
2

を使用MediaPlayerして、

http://developer.android.com/reference/android/media/MediaPlayer.html

上記のリンクでカバーされている使用方法について知っておくべきことがたくさんあります。これが使用法を説明するシャツスニペットです。

final MediaPlayer mediaPlayer = new MediaPlayer();
try {
    mediaPlayer.reset();
    mediaPlayer.setDataSource(...);
    mediaPlayer.prepare();
} catch (IllegalStateException e) {
    mediaPlayer.release();
} catch (IOException e) {
    mediaPlayer.release();
} catch (IllegalArgumentException e) {
    mediaPlayer.release();
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    public void onCompletion(MediaPlayer mp) {
        mediaPlayer.release();
            }
    });
mediaPlayer.start();
于 2012-04-06T14:04:57.133 に答える
1
try {
    AssetFileDescriptor afd = getAssets().openFd("gavel_single.wav");
    mMediaplayer = new MediaPlayer();
    mMediaplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
    afd.close();
    mMediaplayer.prepare();
    mMediaplayer.start();
    mMediaplayer.setOnCompletionListener(new OnCompletionListener() {
        public void onCompletion(MediaPlayer mMediaPlayer) {
            mMediaPlayer.stop();
            mMediaPlayer.release();
        }
    });
} catch (Exception e) {
        e.printStackTrace();
}

音楽ファイルをアセットフォルダに入れます

于 2012-04-06T14:05:11.000 に答える