1
1
package com .ksy .recordlib .demo ;
2
2
3
+ import android .annotation .TargetApi ;
3
4
import android .app .Activity ;
4
5
import android .app .AlertDialog ;
5
6
import android .content .Context ;
6
7
import android .content .DialogInterface ;
7
8
import android .content .Intent ;
8
9
import android .content .pm .ActivityInfo ;
10
+ import android .content .pm .PackageManager ;
9
11
import android .graphics .Bitmap ;
10
12
import android .graphics .BitmapFactory ;
11
13
import android .graphics .Color ;
12
14
import android .opengl .GLSurfaceView ;
15
+ import android .os .Build ;
13
16
import android .os .Bundle ;
14
17
import android .os .Handler ;
15
18
import android .os .Message ;
16
19
import android .os .SystemClock ;
20
+ import android .support .v4 .content .PermissionChecker ;
17
21
import android .text .TextUtils ;
18
22
import android .util .Log ;
19
23
import android .view .KeyEvent ;
44
48
import java .util .concurrent .ExecutorService ;
45
49
import java .util .concurrent .Executors ;
46
50
47
-
48
51
public class CameraActivity extends Activity {
49
52
50
53
private static final String TAG = "CameraActivity" ;
@@ -212,6 +215,7 @@ public void handleMessage(Message msg) {
212
215
// if(!checkoutPreviewStarted()){
213
216
// return;
214
217
// }
218
+ checkPermission ();
215
219
if (startAuto && mStreamer .startStream ()) {
216
220
mShootingText .setText (STOP_STRING );
217
221
mShootingText .postInvalidate ();
@@ -282,8 +286,11 @@ public void handleMessage(Message msg) {
282
286
builder .setManualFocus (focus_manual );
283
287
printDebugInfo = bundle .getBoolean (SHOW_DEBUGINFO , false );
284
288
289
+ builder .setIsSlightBeauty (false );
285
290
}
286
291
292
+ //可以在这里做权限检查,若没有audio和camera权限,进一步引导用户做权限设置
293
+ checkPermission ();
287
294
mStreamer = new KSYStreamer (this );
288
295
mStreamer .setConfig (builder .build ());
289
296
mStreamer .setDisplayPreview (mCameraPreview );
@@ -297,6 +304,7 @@ public void handleMessage(Message msg) {
297
304
if (showWaterMark ) {
298
305
showWaterMark ();
299
306
}
307
+
300
308
if (testSWFilterInterface ) {
301
309
mStreamer .setOnPreviewFrameListener (new OnPreviewFrameListener () {
302
310
@ Override
@@ -339,6 +347,17 @@ public void onClick(View view) {
339
347
return ;
340
348
}
341
349
lastPipClickTime = curTime ;
350
+ if (mPicPipMode ) {
351
+ mStreamer .hidePipBitmap ();
352
+ if (mPipBitmap != null ) {
353
+ mPipBitmap .recycle ();
354
+ mPipBitmap = null ;
355
+ }
356
+ mPicPipMode = false ;
357
+ mPicturePip .setText (CameraActivity .this .getResources ().getString (R .string .picture_pip ));
358
+ mPicturePip .postInvalidate ();
359
+ }
360
+
342
361
if (!mPipMode ) {
343
362
mKsyMediaPlayer = new KSYMediaPlayer .Builder (CameraActivity .this ).build ();
344
363
mKsyMediaPlayer .setOnBufferingUpdateListener (mOnBufferingUpdateListener );
@@ -381,13 +400,29 @@ public void onClick(View view) {
381
400
return ;
382
401
}
383
402
lastPipClickTime = curTime ;
403
+ if (mPipMode ) {
404
+ if (mKsyMediaPlayer != null ) {
405
+ mKsyMediaPlayer .stop ();
406
+ mKsyMediaPlayer .release ();
407
+ mStreamer .stopPlayer ();
408
+ mKsyMediaPlayer = null ;
409
+ }
410
+ mPipMode = false ;
411
+ mPip .setText (CameraActivity .this .getResources ().getString (R .string .pip ));
412
+ mPip .postInvalidate ();
413
+ }
384
414
385
415
if (!mPicPipMode ) {
386
- mPipBitmap = BitmapFactory .decodeFile ("/sdcard/test.png" );
387
- mStreamer .showPipBitmap (mPipBitmap ,0.6f , 0.6f , 0.4f , 0.4f );
388
- mPicPipMode =true ;
389
- mPicturePip .setText (CameraActivity .this .getResources ().getString (R .string .stop_picture_pip ));
390
- mPicturePip .postInvalidate ();
416
+ executorService .submit (new Runnable () {
417
+ @ Override
418
+ public void run () {
419
+ mPipBitmap = BitmapFactory .decodeFile ("/sdcard/test.png" );
420
+ mStreamer .showPipBitmap (mPipBitmap , 0.6f , 0.6f , 0.4f , 0.4f );
421
+ mPicPipMode = true ;
422
+ mPicturePip .setText (CameraActivity .this .getResources ().getString (R .string .stop_picture_pip ));
423
+ mPicturePip .postInvalidate ();
424
+ }
425
+ });
391
426
} else {
392
427
mStreamer .hidePipBitmap ();
393
428
if (mPipBitmap != null ) {
@@ -402,8 +437,6 @@ public void onClick(View view) {
402
437
});
403
438
404
439
405
-
406
-
407
440
mBgm .setOnCheckedChangeListener (new CompoundButton .OnCheckedChangeListener () {
408
441
@ Override
409
442
public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
@@ -468,6 +501,7 @@ public void onClick(View arg0) {
468
501
Log .e (TAG , "操作太频繁" );
469
502
}
470
503
} else {
504
+ checkPermission ();
471
505
if (mStreamer .startStream ()) {
472
506
mShootingText .setText (STOP_STRING );
473
507
mShootingText .postInvalidate ();
@@ -552,7 +586,7 @@ private void hideWaterMark() {
552
586
private void showChooseFilter () {
553
587
AlertDialog alertDialog ;
554
588
alertDialog = new AlertDialog .Builder (this ).setTitle ("请选择美颜滤镜" ).setSingleChoiceItems (
555
- new String []{"BEAUTY " , "SKIN_WHITEN" , "BEAUTY_PLUS " , "DENOISE" , "DEMOFILTER" , "SPLIT_E/P_FILTER" , "GROUP_FILTER" }, -1 , new DialogInterface .OnClickListener () {
589
+ new String []{"BEAUTY_SOFT " , "SKIN_WHITEN" , "BEAUTY_ILLUSION " , "DENOISE" ,"DEMOFILTER" , "SPLIT_E/P_FILTER" , "GROUP_FILTER" }, -1 , new DialogInterface .OnClickListener () {
556
590
@ Override
557
591
public void onClick (DialogInterface dialog , int which ) {
558
592
if (which < 4 ) {
@@ -576,11 +610,12 @@ public void onClick(DialogInterface dialog, int which) {
576
610
@ Override
577
611
public void onResume () {
578
612
super .onResume ();
613
+ //可以在这里做权限检查,若没有audio和camera权限,进一步引导用户做权限设置
614
+ checkPermission ();
579
615
if (mKsyBgmPlayer != null ) {
580
616
mKsyBgmPlayer .resume ();
581
617
}
582
- if (mKsyMediaPlayer != null )
583
- {
618
+ if (mKsyMediaPlayer != null ) {
584
619
mKsyMediaPlayer .start ();
585
620
}
586
621
mStreamer .onResume ();
@@ -593,8 +628,7 @@ public void onPause() {
593
628
if (mKsyBgmPlayer != null ) {
594
629
mKsyBgmPlayer .pause ();
595
630
}
596
- if (mKsyMediaPlayer != null )
597
- {
631
+ if (mKsyMediaPlayer != null ) {
598
632
mKsyMediaPlayer .pause ();
599
633
}
600
634
mStreamer .onPause ();
@@ -671,7 +705,7 @@ public void onStatus(int what, int arg1, int arg2, String msg) {
671
705
.sendToTarget ();
672
706
break ;
673
707
case RecorderConstants .KSY_RENDER_EXCEPTION :
674
- mHandler .obtainMessage (what ,"renderer exception" )
708
+ mHandler .obtainMessage (what , "renderer exception" )
675
709
.sendToTarget ();
676
710
break ;
677
711
default :
@@ -851,7 +885,7 @@ public void onClick(View view) {
851
885
@ Override
852
886
public void onBufferingUpdate (IMediaPlayer mp , int percent ) {
853
887
long duration = mKsyMediaPlayer .getDuration ();
854
- long progress = duration * percent / 100 ;
888
+ long progress = duration * percent / 100 ;
855
889
}
856
890
};
857
891
@@ -872,8 +906,7 @@ public void onCompletion(IMediaPlayer mp) {
872
906
private IMediaPlayer .OnErrorListener mOnPlayerErrorListener = new IMediaPlayer .OnErrorListener () {
873
907
@ Override
874
908
public boolean onError (IMediaPlayer mp , int what , int extra ) {
875
- switch (what )
876
- {
909
+ switch (what ) {
877
910
case KSYMediaPlayer .MEDIA_ERROR_UNKNOWN :
878
911
Log .e (TAG , "OnErrorListener, Error Unknown:" + what + ",extra:" + extra );
879
912
break ;
@@ -888,9 +921,30 @@ public boolean onError(IMediaPlayer mp, int what, int extra) {
888
921
public IMediaPlayer .OnInfoListener mOnInfoListener = new IMediaPlayer .OnInfoListener () {
889
922
@ Override
890
923
public boolean onInfo (IMediaPlayer iMediaPlayer , int i , int i1 ) {
891
- Log .d (TAG , "onInfo, what:" + i + ",extra:" + i1 );
924
+ Log .d (TAG , "onInfo, what:" + i + ",extra:" + i1 );
892
925
return false ;
893
926
}
894
927
};
895
928
929
+ private boolean checkPermission () {
930
+ try {
931
+ int pRecordAudio = PermissionChecker .checkCallingOrSelfPermission (this , "android.permission.RECORD_AUDIO" );
932
+ int pCamera = PermissionChecker .checkCallingOrSelfPermission (this , "android.permission.CAMERA" );
933
+
934
+ if (pRecordAudio != PackageManager .PERMISSION_GRANTED ) {
935
+ Log .e (TAG ,"do not have AudioRecord permission, please check" );
936
+ Toast .makeText (this ,"do not have AudioRecord permission, please check" , Toast .LENGTH_LONG ).show ();
937
+ return false ;
938
+ }
939
+ if (pCamera != PackageManager .PERMISSION_GRANTED ) {
940
+ Log .e (TAG ,"do not have CAMERA permission, please check" );
941
+ Toast .makeText (this ,"do not have CAMERA permission, please check" , Toast .LENGTH_LONG ).show ();
942
+ return false ;
943
+ }
944
+ } catch (Exception e ) {
945
+ e .printStackTrace ();
946
+ }
947
+ return true ;
948
+ }
949
+
896
950
}
0 commit comments