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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie zunächst, ohne:
und code für den player stoppen:
und zweitens können Sie Ihre xmlfiles, dann können wir es testen und die Fehler sehen.
Legen Sie einen try-catch-block wie diesem -
Wenn Ihr Gerät so eingestellt ist, Anwendungen zu Debuggen einen Haltepunkt in den catch-block und lassen Sie uns wissen, was die exception sagt. Sie können auch den emulator zu Debuggen.
Dem Obigen code wird geändert und folgender code wird ausgegeben, wie pro Ihre Anforderung.Wenn Sie sind erstellen Sie ein mediaplayer-throuh-MediaPlayer.create(....) Methode ,keine Notwendigkeit der Vorbereitung wieder. Sobald die Freigabe oder reset-Methoden verwendet werden,sollten Sie erforderlich sein, um re-intialize die datasource.
Hier ist mein code getestet und funktioniert Prima:
}
}