2017-02-16 4 views
0

J'écris actuellement une application android et c'est la première fois que je l'ai fait. donc je suis nouveau au studio android. En regardant d'autres messages ici et en ligne. J'essaie d'obtenir du son pour en sortir. J'ai ajouté dans MediaPlayer et mis mes fichiers audio dans/res/raw, cependant quand j'essaie d'exécuter mon application, il s'est écrasé.L'ajout dans MediaPlayer bloque mon application - Impossible de sortir le son

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

Ci-dessus les parties pertinentes de mon code. Je crée mon lecteur multimédia appelé un en haut, puis j'essaie de l'appeler au besoin pour utiliser one.start(), y a-t-il autre chose que j'ai besoin d'ajouter dans mon code pour que cela fonctionne?

Mon application fonctionnait correctement avant d'ajouter le code MediaPlayer.

+0

can u plz ajouter le chat log ..! – Shobhit

+0

Salut, le logcat ne montre rien, tout ce que je reçois sur l'émulateur est un message disant que mon application s'est arrêtée. Ai-je besoin d'ajouter quelque chose dans mon code pour que le logcat affiche des informations? – benjano

Répondre

1

essayez ceci:

Appel MediaPlayer.create() à l'intérieur 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); 

Voici un bon example

+0

Fonctionne parfaitement! Merci d'avoir été bloqué sur ça pour les agers. – benjano