2012-04-23 16 views
5

Ich versuche, eine App, die ein Video mit der Kamera-App aufzeichnet, und dann speichert dieses Video auf SD-Karte, damit ich es spielen kann. Ich habe ein wenig Code, aber ich habe keine Ahnung, wie ich weitermachen kann, da ich ein Anfänger in Android bin.Aufnehmen, Speichern und Abspielen eines Videos in Android

Meine Aktivität:

public class Camcorder extends Activity { 

    private CamcorderView camcorderView; 
    private boolean recording = false; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      //irrelevant code 

      camcorderView = (CamcorderView) findViewById(R.id.camcorder_preview); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) 
     { 
      if (recording) { 
       camcorderView.stopRecording(); 
       finish(); 
      } else { 
       recording = true; 
       camcorderView.startRecording(); 
      } 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    }  
} 

CamcorderView Klasse:

public class CamcorderView extends SurfaceView implements 
    SurfaceHolder.Callback { 

MediaRecorder recorder; 
SurfaceHolder holder; 
String outputFile = "/sdcard/default.mp4"; 

public CamcorderView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    holder = getHolder(); 
    holder.addCallback(this); 
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); 
    // recorder.setVideoSize(480, 320); 
    // recorder.setVideoFrameRate(15); 
    // recorder.setMaxDuration(10000); 
} 

public void surfaceCreated(SurfaceHolder holder) { 
    recorder.setOutputFile(outputFile); 
    recorder.setPreviewDisplay(holder.getSurface()); 
    if (recorder != null) { 
     try { 
      recorder.prepare(); 
     } catch (IllegalStateException e) { 
      Log.e("IllegalStateException", e.toString()); 
     } catch (IOException e) { 
      Log.e("IOException", e.toString()); 
     } 
    } 
} 

public void surfaceChanged(SurfaceHolder holder, int format, int width, 
     int height) { 
} 

public void surfaceDestroyed(SurfaceHolder holder) { 
} 

public void setOutputFile(String filename) 
{ 
    outputFile = filename; 
    recorder.setOutputFile(filename); 
} 

public void startRecording() 
{ 
    recorder.start(); 
} 

public void stopRecording() 
{ 
    recorder.stop(); 
    recorder.release(); 
} 
} 
+0

Werfen Sie einen Blick - http://stackoverflow.com/questions/10186503/camera-app- nicht arbeit/10187932 # 10187932 –

+2

ich hoffe, dass [diese] [1] Sie helfen [1]: http://stackoverflow.com/questions/1817742/android-video-recordi ng-sample –

+0

überprüfen Sie diese, wenn Sie können. http://stackoverflow.com/questions/3956746/how-can-i-record-video-use-the-camera-with-android –

Antwort

6

hey ich denke, dass du dieses nicht versucht. Bitte überprüfen Sie diesen Link und wenn Sie ein Problem haben, lassen Sie es mich wissen video recording example

1

überprüfen Sie diese, wenn Sie können. How can I record video using the camera with Android?. und wenn Sie bekommen dann nicht für Camcorder Google oder gehen an Entwickler Website

+0

Dieser Link, den Sie angegeben haben, wird nicht beantwortet. Es gibt keine einzige Antwort auf diese Frage. Wie willst du hier helfen? –

1

Well seine sehr einfache Videos in Android aufnehmen, indem Sie diesen einfachen Code mit

zunächst auf eine Schaltfläche klicken einfach starten eine Intent

Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
      if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
       startActivityForResult(takeVideoIntent, 
         CAMERA_REQUEST_CODE_VEDIO); 
      } 

als onActivityResult Methode

Uri videoUri = data.getData(); 
       path = Utils.getRealPathFromURI(videoUri, this); 
       manageVideo(path);///What ever you want to do with your vedio 

und schließlich fügen Sie Berechtigungen für den menife

st
<uses-feature 
    android:name="android.hardware.camera" 
    android:required="true" /> 

Hoffe, es anderen zu helfen, die Hilfe suchen :)

Dank

0
// Put this code in ,on Button click or in onCreate to Capture the Video 


    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
    videoUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
    startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 

    //////////////////////////////// 


private static Uri getOutputMediaFileUri(int type){ 
    return Uri.fromFile(getOutputMediaFile(type)); 
} 

private static File getOutputMediaFile(int type){ 
    // Check that the SDCard is mounted 
    File mediaStorageDir = new File(Environment.getExternalStorageDirectory() +"/YourDirectoryName"); 
    // Create the storage directory(MyCameraVideo) if it does not exist 
    if (! mediaStorageDir.exists()){ 

     if (! mediaStorageDir.mkdirs()){ 

      Log.d("MyCameraVideo", "Failed to create directory MyCameraVideo."); 
      return null; 
     } 
    } 

    // Create a media file name 
    // For unique file name appending current timeStamp with file name 
    java.util.Date date= new java.util.Date(); 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(date.getTime()); 

    File mediaFile; 
    if(type == MEDIA_TYPE_VIDEO) { 

     // For unique video file name appending current timeStamp with file name 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
       "VID_"+ timeStamp + ".mp4"); 

    } else { 
     return null; 
    } 

    return mediaFile; 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // After camera screen this code will execute 
    if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) { 

     if (resultCode == RESULT_OK) { 
      videoUri = data.getData(); 

      // Video captured and saved to fileUri specified in the Intent 
      // Toast.makeText(getActivity(), "Video saved to: " +data.getData(), Toast.LENGTH_LONG).show(); 

     } else if (resultCode == RESULT_CANCELED) { 

      // User cancelled the video capture 
      Toast.makeText(getActivity(), "User cancelled the video capture.", Toast.LENGTH_LONG).show(); 

     } else { 
      // Video capture failed, advise user 
      Toast.makeText(getActivity(), "Video capture failed.", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
Verwandte Themen