Как сделать снимок (моментальный снимок), в то время как видео было записано с использованием поверхностного вида

Я закончил запись видео с поверхности. Теперь я хочу знать «как сделать снимок (моментальный снимок), когда видео было записано с использованием поверхностного вида»? Кто-нибудь может мне помочь.! Что нужно добавить в кнопку mycam , чтобы сделать снимок?

public class ActiveCam extends Activity implements SurfaceHolder.Callback { boolean recording = false; MediaRecorder mediaRecorder; SurfaceHolder surfaceHolder; Button myStart; Button myStop; Button mycam; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); recording = false; mediaRecorder = new MediaRecorder(); initMediaRecorder(); setContentView(R.layout.camact); //This is my XML file Button b3=(Button)findViewById(R.id.button3); SurfaceView myVideoView = (SurfaceView)findViewById(R.id.preview); surfaceHolder = myVideoView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); myStart = (Button)findViewById(R.id.button1); myStart.setOnClickListener(myButtonOnClickListener); myStop = (Button)findViewById(R.id.button2); myStop.setOnClickListener(myButtonOnClickListener1); mycam = (Button)findViewById(R.id.button3); mycam.setOnClickListener(myButtonOnClickListener3); } private Button.OnClickListener myButtonOnClickListener1 = new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; //finish(); } }; Camera.PictureCallback mCall = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { //decode the data obtained by the camera into a Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length); //set the iv_image Toast.makeText(ActiveCam.this,"cap", Toast.LENGTH_LONG).show(); //iv_image.setImageBitmap(bmp); } }; private Button.OnClickListener myButtonOnClickListener3 = new Button.OnClickListener() { @Override public void onClick(View arg0) { //I need to take picture after pressing this button...What I needs to add here??? } }; private Button.OnClickListener myButtonOnClickListener = new Button.OnClickListener() { @Override public void onClick(View arg0) { mediaRecorder.start(); recording = true; myStop.setText("STOP"); } }; @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub prepareMediaRecorder(); } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub } private void initMediaRecorder() { mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); mediaRecorder.setProfile(camcorderProfile_HQ); mediaRecorder.setOutputFile("/sdcard/your.mp4"); //mediaRecorder.setMaxFileSize(..set size..); } private void prepareMediaRecorder() { mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); try { mediaRecorder.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Это мой XML-файл

 <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" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Start" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="16dp" android:text="Pause" /> <SurfaceView android:id="@+id/preview" android:layout_width="500px" android:layout_height="500px" android:layout_alignLeft="@+id/textView1" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="34dp" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/spinner1" android:layout_marginLeft="20dp" android:layout_marginTop="36dp" android:text="Button" /> </RelativeLayout> 

RecordingView link и link. Вы можете сделать снимок с помощью этого кода. Если у вас есть videoView в вашем xml, вы должны сделать linearLayout своим родителем (videoView как дочерний элемент linearLayout), и когда вы сохраните изображение linearlayout, это означает, что вы будете сохранять свои Видеоизображение.

Попробуйте это и прочитайте этот код, который я отправил, чтобы сделать снимок.

  <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" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Start" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="16dp" android:text="Pause" /> <ImageView android:layout_width="120dip" android:layout_height="120dip" android:text="Take Screenshot" android:id="@+id/ImageView01" android:layout_centerHorizontal="true" /> <LinearLayout android:orientation="vertical" android:layout_width="500px" android:layout_height="500px" android:id="@+id/LinearLayout01" android:layout_alignLeft="@+id/textView1" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:background="#FF0000" android:layout_marginBottom="34dp"> <SurfaceView android:id="@+id/preview" android:layout_width="400px" android:layout_height="400px" android:layout_gravity="center" /> </LinearLayout> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/spinner1" android:layout_marginLeft="20dp" android:layout_marginTop="36dp" android:text="Button" /> </RelativeLayout> 

Надеюсь, это поможет

Добавьте это на Button3 Listner

 private Button.OnClickListener myButtonOnClickListener3 = new Button.OnClickListener() { @Override public void onClick(View arg0) { //I need to take picture after pressing this button...What I needs to add here??? //View v1 = L1.getFocusedChild(); L1.setDrawingCacheEnabled(true); Bitmap bm = L1.getDrawingCache(); BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); ImageView image = (ImageView) findViewById(R.id.ImageView01); image.setBackgroundDrawable(bitmapDrawable); } }; 

Измените свой диспетчер поверхностей и высоту

 <SurfaceView android:id="@+id/preview" android:layout_width="400px" android:layout_height="400px" android:layout_gravity="center" /> 

И добавьте android:background="#FF0000" в вашей линейной компоновке

Это поможет вам понять, что работает код моментального снимка ur

Intereting Posts
Создайте расширенный список просмотров с помощью группового и дочернего флажков Как сделать диалог выбора номера? Ошибка в файле strings.xml в Android Неразрешенная ошибка GWT в проекте HTML LibGDX Плагин Eclipse github: ошибка с фиксацией изменений – запись не найдена по пути Новый тип учетной записи Android без аутентификации Как импортировать зависимости AAR от Android, используя Maven в Eclipse? Android – отправлено плохое уведомление – не удалось расширить RemoteViews для: StatusBarNotification Как получить метаданные потокового онлайн-радио Нужно ли мне перезвонить super.onDraw () в пользовательском представлении? Переменная подсказка для поиска Правильный способ создания диалогового окна настраиваемого материала с помощью приложения AppCompat 23+ Чтение всех файлов в файловой системе Android Заменить командную строку формы кодировки android gradle Как получить pid приложения Android с помощью оболочки adb?