2013-05-16 37 views
0

我有一個簡單的代碼,它可以通過點擊一個按鈕來記錄視頻。手動點擊工作正常,但myButton.performClick()不起作用(應用程序停止)。我也試過setPressed(),但點擊它不會產生任何影響。 如果我沒有任何按鈕點擊直接啓動mediarecorder,那麼應用程序也會崩潰。 我很無能。button.performclick()不起作用

 public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     recording = false; 

     setContentView(R.layout.main); 

     //Get Camera for preview 
     myCamera = getCameraInstance(); 
     if(myCamera == null){ 
     Toast.makeText(AndroidVideoCapture.this, 
     "Fail to get Camera", 
     Toast.LENGTH_LONG).show(); 
     } 

     myCameraSurfaceView = new MyCameraSurfaceView(this, myCamera); 
     FrameLayout myCameraPreview = (FrameLayout)findViewById(R.id.videoview); 
     myCameraPreview.addView(myCameraSurfaceView); 

     myButton = (Button)findViewById(R.id.mybutton); 
     myButton.setOnClickListener(myButtonOnClickListener); 

    myButton.performClick(); 
    } 

Button.OnClickListener myButtonOnClickListener 
    = new Button.OnClickListener(){  
     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if(recording){ 
         // stop recording and release camera 
         mediaRecorder.stop(); // stop the recording 
         releaseMediaRecorder(); // release the MediaRecorder object 

         //Exit after saved 
         finish(); 
     }else{ 

      //Release Camera before MediaRecorder start 
      releaseCamera(); 

       if(!prepareMediaRecorder()){ 
       Toast.makeText(AndroidVideoCapture.this, 
        "Fail in prepareMediaRecorder()!\n - Ended -", 
        Toast.LENGTH_LONG).show(); 
       finish(); 
       } 

      mediaRecorder.start(); 
      recording = true; 
      myButton.setText("STOP"); 
     } 
}}; 

我的日誌文件 -

05-16 12:40:35.680: E/MediaRecorderJNI(1710): Application lost the surface 
05-16 12:40:35.680: E/AndroidRuntime(1710): in writeCrashedAppName, pkgName :com.exercise.AndroidVideoCapture 
05-16 12:40:35.680: E/AndroidRuntime(1710): FATAL EXCEPTION: main 
05-16 12:40:35.680: E/AndroidRuntime(1710): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exercise.AndroidVideoCapture/com.exercise.AndroidVideoCapture.AndroidVideoCapture}: java.lang.NullPointerException 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.os.Looper.loop(Looper.java:130) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:638) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at dalvik.system.NativeStart.main(Native Method) 
05-16 12:40:35.680: E/AndroidRuntime(1710): Caused by: java.lang.NullPointerException 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at com.exercise.AndroidVideoCapture.AndroidVideoCapture$1.onClick(AndroidVideoCapture.java:145) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.view.View.performClick(View.java:2485) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at com.exercise.AndroidVideoCapture.AndroidVideoCapture.onCreate(AndroidVideoCapture.java:74) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
05-16 12:40:35.680: E/AndroidRuntime(1710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
05-1 

6 12:40:35.680:E/AndroidRuntime(1710):... 11多個

+0

它是什麼錯誤。 – Riser

+0

在哪裏你有錯誤? – Riser

+0

okey。把你的整個logcat放在這裏。 – Riser

回答

0

你正在嘗試做的,一旦是因爲它載入你想開始錄音。你爲什麼要自動化一個按鈕點擊,將其中的onclick代碼放到方法中,並取代myButton.performClick();調用該方法

+0

是的我正在努力做你說的。我做了你所要求的創建一個函數,也試圖直接把代碼啓動媒體記錄在onCreate()但沒有工作:( – monu

+0

你還會得到同樣的錯誤嗎? – prvn

+0

是............ – monu