IMediaPlayer.java
2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.megvii.idcardlib.util;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import com.megvii.idcardlib.R;
import com.megvii.livenessdetection.Detector;
public class IMediaPlayer {
public MediaPlayer mMediaPlayer;
private Context mContext;
public IMediaPlayer(Context mContext) {
this.mContext = mContext;
mMediaPlayer = new MediaPlayer();
}
public void close(){
mContext = null;
if (mMediaPlayer != null) {
mMediaPlayer.reset();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
/**
*重置 (重新设置播放器引擎)
*/
public void reset(){
if (mMediaPlayer != null) {
mMediaPlayer.reset();
}
}
/**
*播放成功回调接口
*/
public void setOnCompletionListener(final Detector.DetectionType detectiontype){
if (mMediaPlayer == null) {
mMediaPlayer = new MediaPlayer();
}
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
doPlay(getSoundRes(detectiontype));
mMediaPlayer.setOnCompletionListener(null);
}
});
}
/**
* 多媒体播放
*/
public void doPlay(int rawId) {
if (this.mMediaPlayer == null)
return;
mMediaPlayer.reset();
try {
AssetFileDescriptor localAssetFileDescriptor = mContext.getResources().openRawResourceFd(rawId);
mMediaPlayer.setDataSource(localAssetFileDescriptor.getFileDescriptor(),
localAssetFileDescriptor.getStartOffset(),
localAssetFileDescriptor.getLength());
localAssetFileDescriptor.close();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
}
});
mMediaPlayer.prepareAsync();
} catch (Exception localIOException) {
localIOException.printStackTrace();
}
}
public int getSoundRes(Detector.DetectionType detectionType) {
int resID = -1;
switch (detectionType) {
case POS_PITCH:
resID = R.raw.meglive_pitch_down;
break;
case POS_YAW_LEFT:
case POS_YAW_RIGHT:
case POS_YAW:
resID = R.raw.meglive_yaw;
break;
case MOUTH:
resID = R.raw.meglive_mouth_open;
break;
case BLINK:
resID = R.raw.meglive_eye_blink;
break;
}
return resID;
}
}