onClick을 실행할 수 없습니다.

user5766565

도움을 주셔서 감사합니다. 녹음 및 재생 버튼의 파일 경로에 존재하지 않는 디렉토리를 포함시킨 것으로 나타났습니다.

좋습니다. 여기에 거래가 있습니다.

나는 그들의 AudioCapture 클래스에 대한 구글의 예제 코드를 사용하여 여기에 내가 클래스 뭐하는 거지 프로젝트에 대한. 4 개의 다른 사운드를 녹음하고 재생할 수 있는 사운드 보드 앱을 만들고 있습니다.

내 문제는 내 pClick 및 rClick 기능을 둘러싸고 있으며 내 Button tempButt 라인과 관련이 있다고 믿을 이유가 있습니다.

시간을내어이 글을 읽어 주시고 제 문제를 도와 주셔서 감사합니다.

내가받는 오류는 다음과 같습니다.

업데이트 됨

    04-14 03:16:29.639 22570-22570/com.example.oreoman.failuredude D/OpenGLRenderer: Enabling debug mode 0
04-14 03:16:31.358 22570-22570/com.example.oreoman.failuredude E/AudioRecordTest: prepare() failed
04-14 03:16:31.358 22570-22570/com.example.oreoman.failuredude E/MediaRecorder: start called in an invalid state: 4
04-14 03:16:31.359 22570-22570/com.example.oreoman.failuredude D/AndroidRuntime: Shutting down VM
04-14 03:16:31.359 22570-22570/com.example.oreoman.failuredude W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41702d40)
04-14 03:16:31.367 22570-22570/com.example.oreoman.failuredude E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: com.example.oreoman.failuredude, PID: 22570
                                                                                 java.lang.IllegalStateException: Could not execute method of the activity
                                                                                     at android.view.View$1.onClick(View.java:3851)
                                                                                     at android.view.View.performClick(View.java:4466)
                                                                                     at android.view.View$PerformClick.run(View.java:18537)
                                                                                     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:5102)
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                                     at dalvik.system.NativeStart.main(Native Method)
                                                                                  Caused by: java.lang.reflect.InvocationTargetException
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                     at android.view.View$1.onClick(View.java:3846)
                                                                                     at android.view.View.performClick(View.java:4466) 
                                                                                     at android.view.View$PerformClick.run(View.java:18537) 
                                                                                     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:5102) 
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                                                     at dalvik.system.NativeStart.main(Native Method) 
                                                                                  Caused by: java.lang.IllegalStateException
                                                                                     at android.media.MediaRecorder.start(Native Method)
                                                                                     at com.example.oreoman.failuredude.AudioRecordTest.startRecording(AudioRecordTest.java:120)
                                                                                     at com.example.oreoman.failuredude.AudioRecordTest.onRecord(AudioRecordTest.java:35)
                                                                                     at com.example.oreoman.failuredude.AudioRecordTest.rClick(AudioRecordTest.java:131)
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                     at android.view.View$1.onClick(View.java:3846) 
                                                                                     at android.view.View.performClick(View.java:4466) 
                                                                                     at android.view.View$PerformClick.run(View.java:18537) 
                                                                                     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:5102) 
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                                                     at dalvik.system.NativeStart.main(Native Method) 

다음은 내 Java 파일입니다.

package com.example.oreoman.failuredude;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.view.View;
import android.util.Log;
import android.media.MediaRecorder;
import android.media.MediaPlayer;

import java.io.IOException;


public class AudioRecordTest extends Activity
{
    private static final String LOG_TAG = "AudioRecordTest";

    private static String mFileA = null;
    private static String mFileB = null;
    private static String mFileC = null;
    private static String mFileD = null;

    boolean mStartPlaying = true;
    boolean mStartRecording = true;

    //private Button tempButt = null;

    private MediaRecorder mRecorder = null;

    private MediaPlayer   mPlayer = null;

    private void onRecord(boolean start, String theOne) {
        if (start) {
            startRecording(theOne);
        } else {
            stopRecording();
        }
    }

    private void onPlay(boolean start, String theOne) {
        if (start) {
            startPlaying(theOne);
        } else {
            stopPlaying();
        }
    }

    private void startPlaying(String theOne) {
        mFileA = Environment.getExternalStorageDirectory().getAbsolutePath();
        mPlayer = new MediaPlayer();
        try {
            switch(theOne){
                case "mPlayA":
                    mFileA += "/dakotaApp/audio1.mp4";
                    mPlayer.setDataSource(mFileA);
                    break;
                case "mPlayB":
                    mFileB = mFileA;
                    mFileB += "/dakotaApp/audio1.mp4";
                    mPlayer.setDataSource(mFileB);
                    break;
                case "mPlayC":
                    mFileC = mFileA;
                    mFileC += "/dakotaApp/audio1.mp4";
                    mPlayer.setDataSource(mFileC);
                    break;
                case "mPlayD":
                    mFileD = mFileA;
                    mFileD += "/dakotaApp/audio1.mp4";
                    mPlayer.setDataSource(mFileD);
                    break;
            }
            mPlayer.prepare();
            mPlayer.start();
        } catch (IOException e) {
            Log.e(LOG_TAG, "prepare() failed");
        }
    }

    private void stopPlaying() {
        mPlayer.release();
        mPlayer = null;
    }

    private void startRecording(String theOne) {
        mFileA = Environment.getExternalStorageDirectory().getAbsolutePath();
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        switch(theOne){
            case "mRecordA":
                mFileA += "/dakotaApp/audio1.mp4";
                mRecorder.setOutputFile(mFileA);
                break;
            case "mRecordB":
                mFileB = mFileA;
                mFileB += "/dakotaApp/audio1.mp4";
                mRecorder.setOutputFile(mFileB);
                break;
            case "mRecordC":
                mFileC = mFileA;
                mFileC += "/dakotaApp/audio1.mp4";
                mRecorder.setOutputFile(mFileC);
                break;
            case "mRecordD":
                mFileD = mFileA;
                mFileD += "/dakotaApp/audio1.mp4";
                mRecorder.setOutputFile(mFileD);
                break;
        }
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e(LOG_TAG, "prepare() failed");
        }

        mRecorder.start();
    }

    private void stopRecording() {
        mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
    }

    public void rClick(View v) {
        String theOne = v.getResources().getResourceEntryName(v.getId());
        onRecord(mStartRecording, theOne);
        switch(theOne) {
            case "mRecordA":
                Button tempButt = (Button)findViewById(R.id.mRecordA);
                if(mStartRecording) tempButt.setText("Stop Recording");
                else tempButt.setText("Start Recording");
                break;
            case "mRecordB":
                tempButt = (Button)findViewById(R.id.mRecordB);
                if(mStartRecording) tempButt.setText("Stop Recording");
                else tempButt.setText("Start Recording");
                break;
            case "mRecordC":
                tempButt = (Button)findViewById(R.id.mRecordC);
                if(mStartRecording) tempButt.setText("Stop Recording");
                else tempButt.setText("Start Recording");
                break;
            case "mRecordD":
                tempButt = (Button)findViewById(R.id.mRecordD);
                if(mStartRecording) tempButt.setText("Stop Recording");
                else tempButt.setText("Start Recording");
                break;
        }
        mStartRecording = !mStartRecording;
    }

    public void pClick(View v) {
        String theOne = v.getResources().getResourceEntryName(v.getId());
        onPlay(mStartPlaying, theOne);
        switch(theOne) {
            case "mPlayA":
                Button tempButt = (Button)findViewById(R.id.mPlayA);
                if(mStartRecording) tempButt.setText("Stop Playing");
                else tempButt.setText("Start Playing");
                break;
            case "mPlayB":
                tempButt = (Button)findViewById(R.id.mPlayB);
                if(mStartRecording) tempButt.setText("Stop Playing");
                else tempButt.setText("Start Playing");
                break;
            case "mPlayC":
                tempButt = (Button)findViewById(R.id.mPlayC);
                if(mStartRecording) tempButt.setText("Stop Playing");
                else tempButt.setText("Start Playing");
                break;
            case "mPlayD":
                tempButt = (Button)findViewById(R.id.mPlayD);
                if(mStartRecording) tempButt.setText("Stop Playing");
                else tempButt.setText("Start Playing");
                break;
        }
        mStartPlaying = !mStartPlaying;
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mRecorder != null) {
            mRecorder.release();
            mRecorder = null;
        }

        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_audio_record_test);
    }
}

활동 파일 :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".AudioRecordTest">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Dakota&apos;s Awesome\nSuper Fun App of Sound!"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textAlignment="center" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start recording"
        android:id="@+id/mRecordA"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="70dp"
        android:onClick="rClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start playing"
        android:id="@+id/mPlayA"
        android:layout_alignTop="@+id/mRecordA"
        android:layout_marginLeft="220dp"
        android:onClick="pClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start recording"
        android:id="@+id/mRecordB"
        android:layout_below="@+id/mRecordA"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="50dp"
        android:onClick="rClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start playing"
        android:id="@+id/mPlayB"
        android:layout_alignTop="@+id/mRecordB"
        android:layout_marginLeft="220dp"
        android:onClick="pClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start recording"
        android:id="@+id/mRecordC"
        android:layout_below="@+id/mRecordB"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="50dp"
        android:onClick="rClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start playing"
        android:id="@+id/mPlayC"
        android:layout_alignTop="@+id/mRecordC"
        android:layout_marginLeft="220dp"
        android:onClick="pClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start recording"
        android:id="@+id/mRecordD"
        android:layout_below="@+id/mRecordC"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="50dp"
        android:onClick="rClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start playing"
        android:id="@+id/mPlayD"
        android:layout_alignTop="@+id/mRecordD"
        android:layout_marginLeft="220dp"
        android:onClick="pClick" />

</RelativeLayout>

마지막으로 매니페스트 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.oreoman.failuredude" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".AudioRecordTest" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
혼자 무실

이것은 당신이 언급 한 것이 아니라 당신의 예외입니다.

원인 : java.lang.IllegalStateException at android.media.MediaRecorder.start (Native Method) at com.example.oreoman.failuredude.AudioRecordTest.startRecording (AudioRecordTest.j‌ ava : 120)

mRecorder.prepare (); 확인하십시오. 예외가 발생합니다. 그렇다면 오류를 수정하십시오.

setOutputFile ()의 경로가 기존 파일을 가리키는 지 확인하십시오.

매니페스트에이 권한이 있는지 확인하십시오.

<uses-permission android:name="android.permission.RECORD_AUDIO" />

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Constraintlayout을 실행할 수 없습니다.

분류에서Dev

PHPUnit을 실행할 수 없습니다.

분류에서Dev

PHPUnit을 실행할 수 없습니다.

분류에서Dev

swirl ()을 실행할 수 없습니다.

분류에서Dev

실행 가능한 입력에 onclick 속성을 추가 할 수 없습니다.

분류에서Dev

명령 실행을 실행할 수 없습니다 .-- release

분류에서Dev

실행 파일을 전혀 실행할 수 없습니다.

분류에서Dev

실행하려면 ImageButton onClick을 가져올 수 없습니다.

분류에서Dev

sudo없이 도커 명령을 실행할 수 없습니다.

분류에서Dev

Gradle : FAILURE : 실행할 작업을 결정할 수 없습니다.

분류에서Dev

Java에서 람다 식을 실행할 수 없습니다.

분류에서Dev

취소 된 작업을 다시 실행할 수 없습니다.

분류에서Dev

PHPUnit을 실행할 때 확장을 찾을 수 없습니다.

분류에서Dev

sudo로 실행할 때 명령을 찾을 수 없습니다.

분류에서Dev

Git Bash는 subl을 실행 한 후 명령을 실행할 수 없습니다.

분류에서Dev

다른 클래스에서 onclick 리스너를 구현하는 버튼을 실행할 수 없습니다.

분류에서Dev

Ubuntu 12.04에서 Spark 2.6.3을 실행할 수 없습니다.

분류에서Dev

Ubuntu 12.04에서 Spark 2.6.3을 실행할 수 없습니다.

분류에서Dev

k8s 모듈을 실행할 수 없습니다.

분류에서Dev

sys.argv --bind로 gunicorn을 실행할 수 없습니다.

분류에서Dev

dotnet swagger 명령을 실행할 수 없습니다.

분류에서Dev

Erlang에서 fsm을 실행할 수 없습니다.

분류에서Dev

루비 콘솔을 실행할 수 없습니다.

분류에서Dev

Docker : 바이너리 파일을 실행할 수 없습니다.

분류에서Dev

C ++에서 실행 파일을 시작할 수 없습니다.

분류에서Dev

netmiko : 목록에서 명령을 실행할 수 없습니다.

분류에서Dev

설치 후 jupyter 노트북을 실행할 수 없습니다.

분류에서Dev

양식을 실행할 수 없습니다.

분류에서Dev

crontab django 명령을 실행할 수 없습니다.

Related 관련 기사

  1. 1

    Constraintlayout을 실행할 수 없습니다.

  2. 2

    PHPUnit을 실행할 수 없습니다.

  3. 3

    PHPUnit을 실행할 수 없습니다.

  4. 4

    swirl ()을 실행할 수 없습니다.

  5. 5

    실행 가능한 입력에 onclick 속성을 추가 할 수 없습니다.

  6. 6

    명령 실행을 실행할 수 없습니다 .-- release

  7. 7

    실행 파일을 전혀 실행할 수 없습니다.

  8. 8

    실행하려면 ImageButton onClick을 가져올 수 없습니다.

  9. 9

    sudo없이 도커 명령을 실행할 수 없습니다.

  10. 10

    Gradle : FAILURE : 실행할 작업을 결정할 수 없습니다.

  11. 11

    Java에서 람다 식을 실행할 수 없습니다.

  12. 12

    취소 된 작업을 다시 실행할 수 없습니다.

  13. 13

    PHPUnit을 실행할 때 확장을 찾을 수 없습니다.

  14. 14

    sudo로 실행할 때 명령을 찾을 수 없습니다.

  15. 15

    Git Bash는 subl을 실행 한 후 명령을 실행할 수 없습니다.

  16. 16

    다른 클래스에서 onclick 리스너를 구현하는 버튼을 실행할 수 없습니다.

  17. 17

    Ubuntu 12.04에서 Spark 2.6.3을 실행할 수 없습니다.

  18. 18

    Ubuntu 12.04에서 Spark 2.6.3을 실행할 수 없습니다.

  19. 19

    k8s 모듈을 실행할 수 없습니다.

  20. 20

    sys.argv --bind로 gunicorn을 실행할 수 없습니다.

  21. 21

    dotnet swagger 명령을 실행할 수 없습니다.

  22. 22

    Erlang에서 fsm을 실행할 수 없습니다.

  23. 23

    루비 콘솔을 실행할 수 없습니다.

  24. 24

    Docker : 바이너리 파일을 실행할 수 없습니다.

  25. 25

    C ++에서 실행 파일을 시작할 수 없습니다.

  26. 26

    netmiko : 목록에서 명령을 실행할 수 없습니다.

  27. 27

    설치 후 jupyter 노트북을 실행할 수 없습니다.

  28. 28

    양식을 실행할 수 없습니다.

  29. 29

    crontab django 명령을 실행할 수 없습니다.

뜨겁다태그

보관