2014-11-02 2 views
0

나는 안드로이드 개발에 진정으로 초보자입니다. 나는 오디오 파일을 재생하는 방법을 실행하려고하지만 "unfortunatly"앱 이름이 "중지되었습니다."라는 메시지가 나타납니다.Unfortynatly 앱이 중지되었습니다.

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 

그리고 자바 클래스 : 어떤 도움이 많이 주시면 감사하겠습니다

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

} 

여기

오류 로그입니다. 감사합니다 ... 당신의 AndroidManifest.xml에서

+0

예외를 해결할이

<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> 

같아야 활동 클래스

등록 명시 적 활동 클래스 {com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media}를 찾을 수 없으므로이 활동을 선언했습니다. AndroidManifest.xml? " 너? –

+0

아마 매니페스트에 뭔가를 추가하는 것을 잊었습니다. :) –

+0

{com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media}; AndroidManifest.xml에서이 활동을 선언하셨습니까? 와우. 닉이 나를 때렸어! –

답변

1

그래서 매니페스트 파일이 문제

+0

고맙습니다. 그게 내가 누락 된 것이 었어. –

관련 문제