Android MediaRecorder NullPointerException

user4651842

私はJava開発を始めたばかりで、AndroidMediaレコーダーをいじっています。ただし、次のソースコードを使用して記録ボタンをクリックするNullPointerExceptionが発生します。

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
//import android.net.Uri;
import android.view.Menu;
import android.view.MenuItem;
import android.os.Environment;
import android.view.View;
import java.io.File;
import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import java.lang.String;


public class MainActivity extends ActionBarActivity {
   String outputFile = "test.3gp";
    private MediaRecorder myAudioRecorder;
    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MediaRecorder myAudioRecorder = new MediaRecorder();
        myAudioRecorder = new MediaRecorder();
       // Uri target = Uri.parse(outputFile.getAbsolutePath());
        myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
        myAudioRecorder.setOutputFile(outputFile);

    }

    public void Start_Record(View v)
    {
        try {
            myAudioRecorder.prepare();
            myAudioRecorder.start();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        myAudioRecorder.stop();
        myAudioRecorder.release();

    }



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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

これはおそらく塗りつぶしポインタがNULLに設定されているためだと思いますが、これが消えるようにファイル参照を初期化する方法を見つけるのに苦労しています。mediaRecorderPrepare()で例外が発生します

スローされる例外は次のとおりです。

03-09 22:53:56.548  31836-31836/uk.co.spectralgear.spectralboost E/AndroidRuntime﹕ FATAL EXCEPTION: main

    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:4007)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4002)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaRecorder.prepare()' on a null object reference
            at uk.co..MainActivity.Start_Record(MainActivity.java:38)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4002)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

どんな助けでも大歓迎です:)

霧の日

問題:「Start_Record()」が使用しようとすると、クラス変数「myAudioRecord」がnullになります。

Caused by: java.lang.NullPointerException: 
Attempt to invoke virtual method 'void Android.media.MediaRecorder.prepare()' on a null object reference

解決策:「onCreate()」メソッドから次の行を削除します。

public class MainActivity extends ActionBarActivity {
    String outputFile = "test.3gp";
    private MediaRecorder myAudioRecorder;  // Your class variable: OK...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // MediaRecorder myAudioRecorder = new MediaRecorder();  // DELETE THIS LINE!!!
        myAudioRecorder = new MediaRecorder();  // OK...
        ...

onCreate内部「myAudioRecorder」()の宣言は、隠し外宣言。したがって、外部(クラスレベル)の「myAudioRecorder」は初期化されません...「Start_Record()」がアクセスしようとすると、プログラムはNPEで終了します。

PS:

メソッド名を「start_Record()」に変更することを検討してください。または、「startRecord()」。これは、Javaの命名規則とより一貫性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MediaRecorder.pause() in android

分類Dev

AndroidのMediaRecorder.pause()

分類Dev

Android Video Orientation changes on mediarecorder.Start()

分類Dev

Not able to set manual video size in Android MediaRecorder

分類Dev

Android.Media.MediaRecorder - delay when recording audio, with sections of silence

分類Dev

Android:MediaRecorderを起動できません

分類Dev

Android BottomSheetBehavior setState()NullPointerException

分類Dev

android MediaPlayer NullPointerException

分類Dev

Android ArrayAdapter NullPointerException getID

分類Dev

Android NullPointerException + GetDatabaseLocked

分類Dev

Android:findViewById NullpointerException

分類Dev

Android NullPointerException Error Message

分類Dev

Android onClickListener NullPointerException

分類Dev

nullpointerexception on launcher? android

分類Dev

android bindService()NullPointerException

分類Dev

android bindService()NullPointerException

分類Dev

NullPointerException onCreate()Android Studio

分類Dev

Android AIDL iBinder NullPointerException

分類Dev

NullPointerException Android getContext()

分類Dev

ImageSwitcher Android NullPointerException

分類Dev

Android-RecyclerViewのNullPointerException

分類Dev

NullPointerException with Sharing Intent in Android Nougat

分類Dev

Android-NullPointerException:storage == null

分類Dev

nullPointerExceptionヘルプ(android)

分類Dev

Androidの不明なNullPointerException

分類Dev

android webview CustomView onHideCustomView nullpointerexception

分類Dev

android webview CustomView onHideCustomView nullpointerexception

分類Dev

AndroidのDsClientManagerのNullPointerException

分類Dev

Android-RecyclerView NullPointerException getItemCount?

Related 関連記事

  1. 1

    MediaRecorder.pause() in android

  2. 2

    AndroidのMediaRecorder.pause()

  3. 3

    Android Video Orientation changes on mediarecorder.Start()

  4. 4

    Not able to set manual video size in Android MediaRecorder

  5. 5

    Android.Media.MediaRecorder - delay when recording audio, with sections of silence

  6. 6

    Android:MediaRecorderを起動できません

  7. 7

    Android BottomSheetBehavior setState()NullPointerException

  8. 8

    android MediaPlayer NullPointerException

  9. 9

    Android ArrayAdapter NullPointerException getID

  10. 10

    Android NullPointerException + GetDatabaseLocked

  11. 11

    Android:findViewById NullpointerException

  12. 12

    Android NullPointerException Error Message

  13. 13

    Android onClickListener NullPointerException

  14. 14

    nullpointerexception on launcher? android

  15. 15

    android bindService()NullPointerException

  16. 16

    android bindService()NullPointerException

  17. 17

    NullPointerException onCreate()Android Studio

  18. 18

    Android AIDL iBinder NullPointerException

  19. 19

    NullPointerException Android getContext()

  20. 20

    ImageSwitcher Android NullPointerException

  21. 21

    Android-RecyclerViewのNullPointerException

  22. 22

    NullPointerException with Sharing Intent in Android Nougat

  23. 23

    Android-NullPointerException:storage == null

  24. 24

    nullPointerExceptionヘルプ(android)

  25. 25

    Androidの不明なNullPointerException

  26. 26

    android webview CustomView onHideCustomView nullpointerexception

  27. 27

    android webview CustomView onHideCustomView nullpointerexception

  28. 28

    AndroidのDsClientManagerのNullPointerException

  29. 29

    Android-RecyclerView NullPointerException getItemCount?

ホットタグ

アーカイブ