package com.example.myapplication; import java.lang.System; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Bitmap; import android.media.MediaPlayer; import android.os.Environment; import android.graphics.BitmapFactory; import android.util.Log; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import android.database.Cursor; import org.opencv.android.BaseLoaderCallback; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; import org.opencv.android.Utils; import org.opencv.calib3d.Calib3d; import org.opencv.core.Mat; import org.opencv.core.MatOfPoint2f; import org.opencv.core.Point; import org.opencv.core.Size; import org.opencv.imgproc.Imgproc; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; import org.opencv.android.OpenCVLoader; import org.opencv.android.Utils; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc; import java.io.InputStream; public class MainActivity extends AppCompatActivity { private double max_size = 1024; private int PICK_IMAGE_REQUEST = 1; private VideoView video; private Bitmap selectbp; private Bitmap selectbptmp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); staticLoadCVLibraries(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); video = (VideoView)findViewById(R.id.video); Button selectImageBtn = (Button)findViewById(R.id.select_btn); selectImageBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {selectImage(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if (resultCode == RESULT_OK) { Uri uri = data.getData(); video.setVideoURI(uri); } } MediaController mc = new MediaController(MainActivity.this); video.setMediaController(mc); video.requestFocus(); try{ video.start(); }catch(Exception e){ e.printStackTrace(); } video.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){ @Override public void onCompletion(MediaPlayer mp) { Toast.makeText(MainActivity.this, "视频播放完毕", Toast.LENGTH_SHORT).show(); } }); super.onActivityResult(requestCode, resultCode, data); } private void selectImage() { Intent intent = new Intent(); intent.setType("video/*;image/*");//同时选择视频和图片 intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"选择图像..."), PICK_IMAGE_REQUEST); } private void staticLoadCVLibraries() { boolean load = OpenCVLoader.initDebug(); if(load) { Log.i("CV", "Open CV Libraries loaded..."); } } // @Override // protected void onActivityResult(int requestCode, int resultCode, Intent data) { // super.onActivityResult(requestCode, resultCode, data); // if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { // Uri uri = data.getData(); // try { // Log.d("image-tag", "start to decode selected image now..."); // InputStream input = getContentResolver().openInputStream(uri); // BitmapFactory.Options options = new BitmapFactory.Options(); // options.inJustDecodeBounds = true; // BitmapFactory.decodeStream(input, null, options); // int raw_width = options.outWidth; // int raw_height = options.outHeight; // int max = Math.max(raw_width, raw_height); // int newWidth = raw_width; // int newHeight = raw_height; // int inSampleSize = 1; // if(max > max_size) { // newWidth = raw_width / 2; // newHeight = raw_height / 2; // while((newWidth/inSampleSize) > max_size || (newHeight/inSampleSize) > max_size) { // inSampleSize *=2; // } // } // // options.inSampleSize = inSampleSize; // options.inJustDecodeBounds = false; // options.inPreferredConfig = Bitmap.Config.ARGB_8888; // selectbp = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, options); // selectbptmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri), null, options); // myImageView.setImageBitmap(selectbptmp); // // } catch (Exception e) // { // e.printStackTrace(); // } // } // } // private void kaySrc() // { // Mat src = new Mat(); // Mat temp = new Mat(); // Mat dst = new Mat(); // // if(selectbp != null) // { // Utils.bitmapToMat(selectbp, src); // Imgproc.cvtColor(src, temp, Imgproc.COLOR_BGRA2BGR); // Log.i("CV", "image type:" + (temp.type() == CvType.CV_8UC3)); // Imgproc.cvtColor(temp, dst, Imgproc.COLOR_BGR2GRAY); // Utils.matToBitmap(dst, selectbptmp); // myImageView.setImageBitmap(selectbptmp); // } // else // { // new AlertDialog.Builder(MainActivity.this) // .setMessage("请先选择图片!") // .setPositiveButton("OK", // new DialogInterface.OnClickListener() { // @Override // public void onClick(DialogInterface dialog, int which) {} // }).show(); // } // } }
Android选择视频并播放
最新推荐文章于 2025-03-12 14:00:27 发布