视频播放器增加人脸识别,当检测到人脸播放,否则暂停

1、在packages/apps/Gallery2/AndroidManifest.xml文件中增加

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

2、packages/apps/Gallery2/src/com/mediatek/gallery3d/util/PermissionHelper.java

--- a/alps/packages/apps/Gallery2/src/com/mediatek/gallery3d/util/PermissionHelper.java

+++ b/alps/packages/apps/Gallery2/src/com/mediatek/gallery3d/util/PermissionHelper.java

@@ -83,6 +83,7 @@ public class PermissionHelper {

         // get permissions needed in current scenario

         ArrayList<String> permissionsNeeded = new ArrayList<String>();

         permissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

+ permissionsNeeded.add(Manifest.permission.CAMERA);

         Uri uri = activity.getIntent().getData();

         if (uri != null && uri.toString().startsWith("content://mms")) {

             permissionsNeeded.add(Manifest.permission.READ_SMS);

 

3、修改packages/apps/Gallery2/src/com/android/gallery3d/app/MovieActivity.java

import com.mediatek.gallery3d.video.IMovieListLoader.LoaderListener;

 import com.mediatek.gallery3d.video.DefaultMovieListLoader;

 import android.os.PowerManager;

+import android.hardware.Camera;

+import android.graphics.YuvImage;

+import java.io.ByteArrayOutputStream;

+import android.graphics.Matrix;

+import android.media.FaceDetector;

+import android.graphics.Canvas;

+import android.graphics.BitmapFactory;

+import android.graphics.Rect;

+import android.graphics.Paint;

+

+import android.hardware.Camera;

+import android.hardware.Camera.Face;

+import android.hardware.Camera.FaceDetectionListener;

+import android.content.pm.PackageManager;



 /**

  * This activity plays a video from a specified URI.

@@ -95,7 +109,7 @@ import android.os.PowerManager;

  * to set the action bar logo so the playback process looks more seamlessly integrated with

  * the original activity.

  */

-public class MovieActivity extends Activity implements LoaderListener , CreateBeamUrisCallback {

+public class MovieActivity extends Activity implements LoaderListener , CreateBeamUrisCallback , FaceDetectionListener {

     @SuppressWarnings("unused")

     private static final String TAG = "Gallery2/MovieActivity";

     public static final String KEY_LOGO_BITMAP = "logo-bitmap";

@@ -165,8 +179,9 @@ public class MovieActivity extends Activity implements LoaderListener , CreateBe

     private final Runnable mPlayVideoRunnable = new Runnable() {

         @Override

         public void run() {

+ Log.i("chengrq", "mBeamVideoIsPlaying:" + mBeamVideoIsPlaying);

             if (mPlayer != null && mBeamVideoIsPlaying) {

-                Log.i(TAG, "NFC call play video");

+                Log.i("chengrq", "NFC call play video");

                 mPlayer.onPlayPause();

             }

         }

@@ -513,6 +528,12 @@ public class MovieActivity extends Activity implements LoaderListener , CreateBe

             Log.v(TAG, "onPause, no permission, directly return");

             return;

         }

+

+ if(mCameraDevice != null){

+ stopFaceDetection();

+ mCameraDevice.stopPreview();

+ mCameraDevice.release();

+ }



         mResumed = false;

         if (mControlResumed && mPlayer != null) {

@@ -557,7 +578,71 @@ public class MovieActivity extends Activity implements LoaderListener , CreateBe

         //}@

         enhanceActionBar();

         mMovieHooker.onResume();



+ //chengrq start 

+ try {

+ Log.i("chengrq", "open camera");

+ mCameraDevice = android.hardware.Camera.open(1);

+ if (mCameraDevice != null) {

+ android.util.Log.e("chengrq","open camera successful");

+ }

+ } catch (Exception e) {

+            mCameraDevice = null;

+ }

+

+ if(mCameraDevice != null){

+ mCameraDevice.startPreview();         //该语句可放在回调后面,当执行到这里,调用前面的setPreviewCallback 

+

+ startFaceDetection();

+ }

+ //end

     }

+

+ private void startFaceDetection(){

+ if(mCameraDevice != null){

+ mCameraDevice.setFaceDetectionListener(this);

+ mCameraDevice.startFaceDetection();

+ }

+ }

+

+ private void stopFaceDetection(){

+ if(mCameraDevice != null){

+ mCameraDevice.setFaceDetectionListener(null);

+ mCameraDevice.stopFaceDetection();

+ }

+ }

+

+ @Override

+ public void onFaceDetection(Face[] faces, Camera arg1) {

+ // TODO Auto-generated method stub

+ //Log.e("chengrq","onFaceDetection");

+ if(faces != null){

+ if(faces.length > 0 && mHandler != null){

+ mHandler.removeCallbacks(mPauseVideoRunnable);

+ if(!mPlayer.isPlaying()){

+ mPlayer.onPlayPause();

+ }

+ }else{

+ if(mPlayer.isPlaying()){

+ mHandler.postDelayed(mPauseVideoRunnable, 500);

+ }

+ }

+ }

+ }

+

+ private android.hardware.Camera mCameraDevice;



     @Override

     public void onWindowFocusChanged(boolean hasFocus

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值