2012-04-06 3 views
4

私は希望の機能を持つアプリケーションを持っています。アンドロイドアプリケーションへのビープ音の実装

Howerver、特定の回数のトーストが表示され、トーストが表示されるのと同時に再生するように二重ビープ音を鳴らして、表示されているメッセージをユーザーに警告します。

アンドロイドで音を鳴らすのに最適な方法や、アラートに使用するためにアクセスできるデフォルトの音があるかどうかはわかりません。

いくつかのガイダンスをいただければ幸いです。

おかげ

UPDATE

私は私のメインの活動ファイルに次のコードがあります。

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 /生

にビープという名前のサウンドファイルを持っています

トーストが表示されているif文でこのメソッドを呼び出す方法はありますかそれで2人が同時に出会うでしょうか?

UPDATE 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 

任意のアイデアは?

+0

disp Toastを配置してこのメ​​ソッドを呼び出す – Ravi1187342

+0

UPDATE 2のコードスニペットを参照 – Rob

+0

私はこの 'playAlertTone(getApplicationContext());を編集しました。 //ここで編集しました ' – Ravi1187342

答えて

5

をあなたの音楽ファイルを置きますスレッド内のオーディオを再生する

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()); 


    } 
+0

私はこの方法を試しています。私はこのメソッドを主なアクティビティに追加しましたが、ifステートメント内でこのメソッドを呼び出す方法がわかりません。たとえば、私は10秒後にトーストを表示するタイマーを持っていますが、トーストと同時にビープ音を再生するには、上記の方法をどのように呼び出すことができますか?何か案は? – Rob

+0

を呼び出すことができます。 Contextをこのメソッドのパラメータとして渡します。あなたのアプローチをテストし、何が起こるか教えてください。このplayAlertTone(コンテキスト)のような – Ravi1187342

+0

; ? - コンテキストが変数 – Rob

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(); 
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(); 
} 

あなたは、生ののres /で、あなたのプロジェクト

フォルダをあなたのオーディオファイルを置くことができ、資産フォルダに

関連する問題