2011-06-27 22 views
0

新しいAndroidデベロッパーがここにいます。私は、 "ok"ボタンを押し続けると、ループでデフォルトの着信音を再生するアプリケーションを実装しようとしています。私が持っているものAndroid Appボタンを押したときに音が鳴ります。

は、これまでのところしかし

package com.tick.helloAndroid; 

import net.technologichron.android.control.NumberPicker; 
import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.os.Bundle; 
//import android.widget.TextView; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.Button; 
import android.widget.Toast; 


public class main extends Activity implements OnTouchListener { 
    private int REQUEST_ENABLE_BT = 1; 
    private MediaPlayer mp; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Set up the window layout 
     setContentView(R.layout.main); 

     final Button zero = (Button) this.findViewById(R.id.ok); 
     zero.setOnTouchListener(this); 
     Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
     mp.setDataSource(this, alert); 

    } 
    public boolean onTouch(View v, MotionEvent event) { 

     switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 
      mp.setLooping(true); 
      mp.start(); 

     case MotionEvent.ACTION_UP: 
      mp.pause(); 
     } 

     return true; 
    } 
} 

From doing some searching on SO, this seems to work for some people,、ライン

mp.setDataSource(this, alert); 

は動作しないようです。動作しないことで、私は、それは私はアンドロイドのエミュレータ上でアプリケーションを実行しようとすると、

try { 
     mp.setDataSource(this, alert); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(this, "args", Toast.LENGTH_LONG).show(); 
     finish(); 
     return; 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(this, "sec", Toast.LENGTH_LONG).show(); 
     finish(); 
     return; 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(this, "illega", Toast.LENGTH_LONG).show(); 
     finish(); 
     return; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     Toast.makeText(this, "io", Toast.LENGTH_LONG).show(); 
     finish(); 
     return; 
    } 

、のtry-catchステートメントを実行すると、エラーが、クラッシュせずにコンパイルし、「未処理の例外エラー」を、強制的にあることを意味します上記のキャッチ文字列は表示されません。

私が間違って行ったことに関する考えやアイデアは、一番高く評価されます。

編集:エミュは着メロがないという事実からではありますか?

+0

例外はありますか?覚えておいてください:try/catchは実行時エラーです。 – ethrbunny

+0

未処理の例外エラー。可能性のある例外の数が多い場合に一連のcatchステートメントを実行すると、アプリは細かいエラー0個をコンパイルします。しかし、それを実行すると、それはちょうどクラッシュします –

答えて

0

mp3をインスタンス化するのを忘れた.... haha​​hahha

関連する問題