2014-11-02 122 views
0

我是一个真正的新手android开发。我试图运行播放音频文件的方法,但当我打开它时,我收到了“不幸”的应用程序名称“已停止”。不幸你的应用已经停止

以下是错误日志:

FATAL EXCEPTION: main 
Process: com.androiddevbook.onyourbike.chapter4, PID: 21393 
java.lang.IllegalStateException: Could not execute method of the activity 
    at android.view.View$1.onClick(View.java:3823) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5001) 
    at java.lang.reflect.Method.invoke(Native Method): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.view.View$1.onClick(View.java:3818) 
    ... 9 more 
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media}; have you declared this activity in your AndroidManifest.xml? 
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628) 
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) 
    at android.app.Activity.startActivityForResult(Activity.java:3424) 
    at android.app.Activity.startActivityForResult(Activity.java:3385) 
    at android.app.Activity.startActivity(Activity.java:3627) 
    at android.app.Activity.startActivity(Activity.java:3595) 
    at com.androiddevbook.onyourbike.chapter4.TimerActivity.clickedMusic(TimerActivity.java:178) 
    ... 11 more 

和Java类:

package com.androiddevbook.onyourbike.chapter4; 

import java.util.concurrent.TimeUnit; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.SeekBar; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.androiddevbook.onyourbike.chapter4.R; 

public class Media extends Activity { 

    public TextView songName,startTimeField,endTimeField; 
    private MediaPlayer mediaPlayer; 
    private double startTime = 0; 
    private double finalTime = 0; 
    private Handler myHandler = new Handler();; 
    private int forwardTime = 5000; 
    private int backwardTime = 5000; 
    private SeekBar seekbar; 
    private ImageButton playButton,pauseButton; 
    public static int oneTimeOnly = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_media); 
     songName = (TextView)findViewById(R.id.textView4); 
     startTimeField =(TextView)findViewById(R.id.textView1); 
     endTimeField =(TextView)findViewById(R.id.textView2); 
     seekbar = (SeekBar)findViewById(R.id.seekBar1); 
     playButton = (ImageButton)findViewById(R.id.imageButton1); 
     pauseButton = (ImageButton)findViewById(R.id.imageButton2); 
     songName.setText("song.mp3"); 
     mediaPlayer = MediaPlayer.create(this, R.raw.song); 
     seekbar.setClickable(false); 
     pauseButton.setEnabled(false); 

    } 

    public void play(View view){ 
    Toast.makeText(getApplicationContext(), "Playing sound", 
    Toast.LENGTH_SHORT).show(); 
     mediaPlayer.start(); 
     finalTime = mediaPlayer.getDuration(); 
     startTime = mediaPlayer.getCurrentPosition(); 
     if(oneTimeOnly == 0){ 
     seekbar.setMax((int) finalTime); 
     oneTimeOnly = 1; 
     } 

     endTimeField.setText(String.format("%d min, %d sec", 
     TimeUnit.MILLISECONDS.toMinutes((long) finalTime), 
     TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
     toMinutes((long) finalTime))) 
    ); 
     startTimeField.setText(String.format("%d min, %d sec", 
     TimeUnit.MILLISECONDS.toMinutes((long) startTime), 
     TimeUnit.MILLISECONDS.toSeconds((long) startTime) - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
     toMinutes((long) startTime))) 
    ); 
     seekbar.setProgress((int)startTime); 
     myHandler.postDelayed(UpdateSongTime,100); 
     pauseButton.setEnabled(true); 
     playButton.setEnabled(false); 
    } 

    private Runnable UpdateSongTime = new Runnable() { 
     public void run() { 
     startTime = mediaPlayer.getCurrentPosition(); 
     startTimeField.setText(String.format("%d min, %d sec", 
      TimeUnit.MILLISECONDS.toMinutes((long) startTime), 
      TimeUnit.MILLISECONDS.toSeconds((long) startTime) - 
      TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
      toMinutes((long) startTime))) 
     ); 
     seekbar.setProgress((int)startTime); 
     myHandler.postDelayed(this, 100); 
     } 
    }; 
    public void pause(View view){ 
     Toast.makeText(getApplicationContext(), "Pausing sound", 
     Toast.LENGTH_SHORT).show(); 

     mediaPlayer.pause(); 
     pauseButton.setEnabled(false); 
     playButton.setEnabled(true); 
    }  
    public void forward(View view){ 
     int temp = (int)startTime; 
     if((temp+forwardTime)<=finalTime){ 
     startTime = startTime + forwardTime; 
     mediaPlayer.seekTo((int) startTime); 
     } 
     else{ 
     Toast.makeText(getApplicationContext(), 
     "Cannot jump forward 5 seconds", 
     Toast.LENGTH_SHORT).show(); 
     } 

    } 
    public void rewind(View view){ 
     int temp = (int)startTime; 
     if((temp-backwardTime)>0){ 
     startTime = startTime - backwardTime; 
     mediaPlayer.seekTo((int) startTime); 
     } 
     else{ 
     Toast.makeText(getApplicationContext(), 
     "Cannot jump backward 5 seconds", 
     Toast.LENGTH_SHORT).show(); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.media, menu); 
    return true; 
    } 

} 

任何帮助将非常感激。谢谢...

+0

异常问你这个问题:“无法找到明确的活动类{com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media};你有没有在你的活动中声明这个活动AndroidManifest.xml中?”你有吗? – 2014-11-02 17:45:01

+0

你忘了给你的清单添加一些东西:) – 2014-11-02 17:45:03

+0

{com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media};你有没有在你的AndroidManifest.xml中声明这个活动?哇。尼克打败了我! – 2014-11-02 17:45:39

回答

1

在AndroidManifest.xml中注册的活动类

所以,你的清单文件应该是这样的

<activity android:name=".MainActivity" 
       android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/>   
     </intent-filter> 
    </activity> 
<activity android:name="yourActivity"></activity> 

这将解决这个问题

+0

非常感谢。那正是我所错过的 – 2014-11-02 17:55:00