当我单击“录制”按钮时,相机开始录制视频。但是当我点击播放按钮时,什么也没发生。我想在VideoView上播放录制的视频。记录按钮工作正常。播放按钮出现问题。录制的视频将保存在内存中。但是不能玩。该如何解决?
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.videorecording">
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-feature
android:name="android.hardware.Camera"
android:required="true"></uses-feature>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XML文件
<Button
android:id="@+id/recordVideo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginEnd="323dp"
android:text="Record"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/playVideo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="136dp"
android:paddingLeft="20dp"
android:text="Play"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/recordVideo"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Java文件
package com.example.videorecording;
import android.content.Intent;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private Button recordButton, playButton;
private VideoView videoView;
static final int REQUEST_VIDEO_CAPTURE = 1;
MediaController mediaController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recordButton = (Button) findViewById(R.id.recordVideo);
playButton = (Button) findViewById(R.id.playVideo);
recordButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recordVideo();
}
});
}
private void recordVideo() {
Intent recordVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (recordVideoIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(recordVideoIntent, REQUEST_VIDEO_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_VIDEO_CAPTURE && requestCode == RESULT_OK) {
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
VideoView videoView = new VideoView(MainActivity.this);
mediaController = new MediaController(MainActivity.this);
videoView.setMediaController(mediaController);
mediaController.setAnchorView(videoView);
videoView.setVideoURI(data.getData());
videoView.start();
builder.setView(videoView);
}
});
}
}
}