2011-12-25 3 views
-1

Я пытаюсь записать видео на мой проект андроида.Android Запись видео

Я нашел несколько примеров в Интернете, но ничего не работает. Normaly, я должен использовать MediaRecorder

Можете ли вы дать мне простой Exemple, я не нужно визуализировать видео, когда это маркер, только чтобы зарегистрировать его на моем SDCard, это все.

Вот Exemple того, что я пытаюсь сделать:

public class VideoCapture extends Activity { 

    MediaRecorder recorder; 
    Button buttonStart = (Button)findViewById(R.id.buttonstart); 
    Button buttonStop = (Button)findViewById(R.id.buttonstop); 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     recorder = new MediaRecorder(); 
     initRecorder(); 
    } 

    private void initRecorder() { 
     recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
     recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
     recorder.setProfile(cpHigh); 
     recorder.setOutputFile("/sdcard/videocapture_example.mp4"); 
     recorder.setMaxDuration(50000); 
     recorder.setMaxFileSize(5000000); 
    } 

    private void prepareRecorder() { 
     try { 
      recorder.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
      finish(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      finish(); 
     } 
    } 

    buttonStart.setOnClickListener(new Button.OnClickListener() 

      { 
     @Override 
     public void onClick(View v) 
     { 
     initRecorder(); 
      prepareRecorder(); 
     }}); 

    buttonStop.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View v) 
     { 
      recorder.stop(); 
     } 
    }); 
} 

StackTrace:

12-25 22:04:24.188: E/AndroidRuntime(1361): FATAL EXCEPTION: main 
12-25 22:04:24.188: E/AndroidRuntime(1361): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{test.milos.net/test.milos.net.TestVideoNetActivity}: java.lang.ClassNotFoundException: test.milos.net.TestVideoNetActivity in loader dalvik.system.PathClassLoader[/data/app/test.milos.net-2.apk] 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.os.Looper.loop(Looper.java:126) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at java.lang.reflect.Method.invoke(Method.java:491) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at dalvik.system.NativeStart.main(Native Method) 
12-25 22:04:24.188: E/AndroidRuntime(1361): Caused by: java.lang.ClassNotFoundException: test.milos.net.TestVideoNetActivity in loader dalvik.system.PathClassLoader[/data/app/test.milos.net-2.apk] 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at java.lang.ClassLoader.loadClass(ClassLoader.java:548) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at java.lang.ClassLoader.loadClass(ClassLoader.java:508) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.Instrumentation.newActivity(Instrumentation.java:1022) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
12-25 22:04:24.188: E/AndroidRuntime(1361):  ... 11 more 
+0

Если вы покажете, что именно вы пытались и что именно не сработало, мы можем вам помочь. Предоставляя вам еще один пример, многие из тех, кого вы сказали, что не нашли ничего для вас. Вы, вероятно, неправильно понимаете, когда несколько примеров не работают. –

+0

Вот мой код @alextsc –

ответ

1

Как угадали, вы делаете несколько вещей неправильно, которые не имеют ничего общего с фактическая видеозапись.

Первая проблема:

Button buttonStart = (Button)findViewById(R.id.buttonstart); 
Button buttonStop = (Button)findViewById(R.id.buttonstop); 

Вы не можете назвать findViewById() здесь. findViewById() выполняет поиск только в текущих действиях иерачи. В момент, когда ваш класс получает установленный статус, нет представления об иератии. Эти члены класса всегда будут равны нулю, потому что это то, что возвращается, если представление не может быть найдено. Вы можете оставить объявление переменной, но перемещать поисковую часть в onCreate(), после вызова setContentView(), например так:

setContentView(R.layout.main); 
buttonStart = (Button)findViewById(R.id.buttonstart); 
buttonStop = (Button)findViewById(R.id.buttonstop); 

То же самое для двух setOnClickListener() вызовов на дне. Они должны быть внутри метода. Я бы предложил переместить эти два блока в onCreate(), а также после звонков findViewById().


Edit: StackTrace указывает, что приложение пытается запустить деятельность под названием TestVideoNetActivity. Ваша действительная деятельность называется VideoCapture.

Откройте AndroidManifest и искать часть, которая выглядит следующим образом:

<activity 
     android:name=".TestVideoNetActivity" 
     ... > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Изменение TestVideoNetActivity к VideoCapture. Также убедитесь, что ваши пакеты совпадают, должна быть строка package="X" в верхней части вашего манифеста и строка package X; в верхней части вашего исходного файла java. Убедитесь, что они имеют такое же значение для X.


Edit 2: Ваша вторая StackTrace указывает на то, что setAudioSource() не удалось. Все, о чем я могу думать, это то, что у вас нет правильных разрешений для доступа к микрофону. Добавьте следующие строки в ваш Android-манифеста (это включает в себя разрешение камеры тоже, так как вам нужно, что хорошо):

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

Добавьте их внутри тега <manifest>, но за пределами <application> тега. Например. после строки <uses-sdk>, если у вас есть (включен по умолчанию, я считаю).

+0

Ну ладно, спасибо за эту помощь. Я сделал это, но моя программа по-прежнему колорит сразу с ошибкой. –

+0

С какой ошибкой вы сталкиваетесь? Диалог «принудительное закрытие»? В этом случае вы можете предоставить стек? Вы можете получить это из logcat, в eclipse используйте 'Window -> Show View -> Logcat'. Должен появиться системный журнал. Запустите приложение и дайте ему сбой. В логе должно появиться большое красное пятно. Пожалуйста, опубликуйте это. –

+0

Логарифм для большого комментария, вот ссылка, я загрузил файл Word с ошибками: [link] (http://www.megaupload.com/?d=AZD8QV2T) Еще раз спасибо за большой Помогите. –

Смежные вопросы