Android: Wie zu stoppen, media player onclick einer Schaltfläche

Ich habe einen play und stop button. Wenn ich führen Sie die folgenden codes, Play-Taste geht auch. Aber wenn ich auf die stop-Taste, ich bin immer ein force close Meldung.

Ich bin neu in der android dev. Vielen Dank im Voraus! 🙂

package com.example.hellomedia;

import java.io.IOException;


import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

public class HelloMedia extends Activity {


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

        final MediaPlayer mPlayer = MediaPlayer.create(HelloMedia.this, R.raw.nicholas);

        setContentView(R.layout.main);

        final Handler mHandler = new Handler();

        final TextView customTextBG = (TextView) findViewById(R.id.customTextBG);
        final TextView customTextHL = (TextView) findViewById(R.id.customTextHL);

        customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
        customTextHL.setText("");

        final String words[] = {
                "Nicholas ", //0
                "was... \n\n", //1
                "Older ", //2
                "than ", //3
                "sin, ", //4
        };

        final long startEndTime[][]={
                {   //start time
                    1148,//0,0
                    1826, //0,1
                    2766,//0,2
                    3079,//0,3
                    3549,//0,4

                },
                {   //end time
                    1357,//1,0
                    2192, //1,1
                    3027,//1,2
                    3183,//1,3
                    3966,//1,4
                }
            };



        customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
        customTextHL.setText("");




        View.OnClickListener handler = new View.OnClickListener(){
            public void onClick(View v) {

                switch (v.getId()) {
                    case R.id.widget30: //PLAY

                        if( !mPlayer.isPlaying() ){

                            try {
                                mPlayer.prepare();
                            } catch (IllegalStateException e) {
                                //TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (IOException e) {
                                //TODO Auto-generated catch block
                                    e.printStackTrace();
                            }

                            mPlayer.start();

                            mHandler.post(new Runnable(){

                                    public void run(){ 
                                    final long currentPos = mPlayer.getCurrentPosition();

                                        int x = 0;
                                        while( x < 102){
                                            if( currentPos > startEndTime[0][x] && currentPos < startEndTime[1][x] ){//0
                                            customTextHL.append(words[x]);
                                            words[x]="";
                                        }
                                        x++;
                                    } mHandler.postDelayed(this, 1);
                                    }

                              });
                        }

                        break;

                    case R.id.widget31: //RESET

                        mHandler.post(new Runnable(){

                            public void run(){ 
                                customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
                                customTextHL.setText("");
                            }

                      });

                        mPlayer.stop();
                        mPlayer.release();

                        break;
                }
            }
        };

        //BUTTONS
        findViewById(R.id.widget30).setOnClickListener(handler); //PLAY
        findViewById(R.id.widget31).setOnClickListener(handler); //RESET

    }
}

Meine main.xml code:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/widget29"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:textStyle="bold" 
android:id="@+id/customTextBG" 
android:textSize="18sp" 
android:text="@+id/customTextBG" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/widget31"
android:layout_alignParentLeft="true"
>
</TextView>
<TextView
android:textStyle="bold" 
android:id="@+id/customTextHL" 
android:textSize="18sp" 
android:text="@+id/customTextHL" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/widget31"
android:layout_alignParentLeft="true"
android:textColor="#00FF00"
>
</TextView>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/widget30"
android:text="@string/reset" android:id="@+id/widget31">
</Button>
<Button
android:id="@+id/widget30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="@string/play">
</Button>
</RelativeLayout>
  • Können Sie uns eine Fehlermeldung? Entweder durch die Verwendung des Debug-Bridge (adb) oder durch die Ausführung des Programms im emulator.
  • Bei mir läuft es in einer Tabelle PC, wie kann ich die Fehlermeldung? Ich bin nicht mit einem emulator, Es ist ein bisschen langsam...
  • Diese Seite erklärt die adb in einer schönen und einfachen Art und Weise: developer.android.com/guide/developing/tools/adb.html
  • Ich meine, tablet, nicht Tabelle. Sorry für meine Fehler 🙂
  • Was ich mache ist, ich die .apk-Datei von meinem pc auf mein tablet pc (android-Gerät). Und dann installieren Sie es dort... Wie kann ich mir die runtime-Fehler in diesem Fall?
  • Um es einfach auszudrücken: Verbinden Sie Ihr Gerät mit Ihrem PC über ein USB-Kabel und verwenden Sie adb zum anzeigen der Fehlermeldungen. Seinen alles erklärt in dem link, den ich oben gepostet. Einfach Lesen, Es lohnt sich, denn es macht die Entwicklung von software für android sehr viel einfacher

InformationsquelleAutor Kris | 2011-03-29
Schreibe einen Kommentar