2017-02-16 7 views
0

私は現在アンドロイドアプリケーションを作成しています。だから私はアンドロイドスタジオの新人です。こことオンラインの他の投稿を見てください。私はそれから出力する音を取得しようとしています。私はMediaPlayerを追加してサウンドファイルを/ res/rawに入れましたが、アプリケーションを実行しようとするとクラッシュしました。MediaPlayerを追加するとアプリがクラッシュする - 音を出力できない

package com.example.myfirstapp; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.os.Handler; 
import android.support.v7.app.ActionBarActivity; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import net.objecthunter.exp4j.Expression; 
import net.objecthunter.exp4j.ExpressionBuilder; 

import static com.example.myfirstapp.R.id.fourfivesix; 
import static com.example.myfirstapp.R.id.operators; 

//import net.objecthunter.exp4j.Expression; 
//import net.objecthunter.exp4j.ExpressionBuilder; 

public class MainActivity extends ActionBarActivity { 
    private int[] operatorButtons = {operators}; 
    private int[] numericButtons = {R.id.onetwothree, fourfivesix, R.id.seveneightninezero}; 
    private boolean lastNumeric, stateError; 
    private TextView txtScreen; 
    private static final int TAP_TIMEOUT = 400; 
    MediaPlayer one = MediaPlayer.create(this, R.raw.one); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Find the TextView 
     this.txtScreen = (TextView) findViewById(R.id.txtScreen); 
     // Find and set OnClickListener to numeric buttons 
//  setNumericOnClickListener(); 
     // Find and set OnClickListener to operator buttons, equal button and decimal point button 
//  setOperatorOnClickListener(); 

     Button onetwothree = (Button) findViewById(R.id.onetwothree); 
     onetwothree.setOnTouchListener(new View.OnTouchListener() { 

      Handler handler = new Handler(); 

      int numberOfTaps = 0; 
      long lastTapTimeMs = 0; 
      long touchDownMs = 0; 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         touchDownMs = System.currentTimeMillis(); 
         break; 
        case MotionEvent.ACTION_UP: 
         handler.removeCallbacksAndMessages(null); 
         if ((System.currentTimeMillis() - touchDownMs) > 1000) { 
          //it was not a tap 

          numberOfTaps = 0; 
          lastTapTimeMs = 0; 
          break; 
         } 

         if (numberOfTaps > 0 
           && (System.currentTimeMillis() - lastTapTimeMs) < 1000) { 
          numberOfTaps += 1; 
         } else { 
          numberOfTaps = 1; 
         } 
         lastTapTimeMs = System.currentTimeMillis(); 

         if (numberOfTaps == 1) { 
          handler.postDelayed(new Runnable() { 

           @Override 
           public void run() { 
            if (txtScreen.getText().toString() == "") { 
             txtScreen.setText("1"); 
             one.start(); 
            } else txtScreen.append("1"); 
           } 
          }, 1000); 



         }else if (numberOfTaps == 2) { 
          handler.postDelayed(new Runnable() { 
           @Override 
           public void run() { 
            if (txtScreen.getText().toString() == "") { 
             txtScreen.setText("2"); 
            } else txtScreen.append("2"); 
           } 
          }, 1000); 

         } else if (numberOfTaps == 3) { 
          if (txtScreen.getText().toString() == "") { 
           txtScreen.setText("3"); 
          } else txtScreen.append("3"); 
         } 
       } 

       return false; 
      } 
     }); 

上記は私のコードの関連部分です。私は一番上にあるメディアプレーヤーを作成して、one.start()を使う必要があるときにそれを呼び出そうとしていますが、これが機能するために私のコードに追加する必要があるものはありますか?

MediaPlayerコードを追加する前に、アプリケーションがうまく動作していました。

+0

ログ猫を追加..です! – Shobhit

+0

こんにちは、logcatは何も表示されません、私はエミュレータで私のアプリが停止したことを伝えるメッセージが表示されます。 logcat do情報を表示するために私のコードに何かを追加する必要がありますか? – benjano

答えて

1

はこれを試してみてください。ここでのonCreate()

public class MainActivity extends ActionBarActivity { 

MediaPlayer one; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     one = MediaPlayer.create(this, R.raw.one); 

内部

コールMediaPlayer.create()はuがplzはできる良いexample

+0

完璧に動作します!どうもありがとうございました。 – benjano

関連する問題