下面列出了android.view.SurfaceHolder#Callback ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void setUpSurfaceHolder() {
if (surfaceView != null) {
surfaceHolderCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (fullscreenVideoMediaPlayer != null) {
fullscreenVideoMediaPlayer.setDisplay(surfaceHolder);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (fullscreenVideoMediaPlayer != null && isMediaPlayerPrepared) {
fullscreenVideoMediaPlayer.pause();
}
}
};
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(surfaceHolderCallback);
}
}
void reportSurfaceDestroyed() {
if (mSurfaceCreated) {
mSurfaceCreated = false;
mSurfaceHolder.ungetCallbacks();
SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks();
if (callbacks != null) {
for (SurfaceHolder.Callback c : callbacks) {
c.surfaceDestroyed(mSurfaceHolder);
}
}
if (DEBUG) Log.v(TAG, "onSurfaceDestroyed("
+ mSurfaceHolder + "): " + this);
onSurfaceDestroyed(mSurfaceHolder);
}
}
public AutoFitSurfaceView(@NonNull Context context, SurfaceHolder.Callback callback) {
super(context);
this.surfaceHolder = getHolder();
this.surfaceHolder.addCallback(callback);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public AutoFitSurfaceView(@NonNull Context context, SurfaceHolder.Callback callback) {
super(context);
this.surfaceHolder = getHolder();
this.surfaceHolder.addCallback(callback);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void openCamera(final Integer cameraId,
final CameraOpenListener<Integer, SurfaceHolder.Callback> cameraOpenListener) {
this.currentCameraId = cameraId;
backgroundHandler.post(new Runnable() {
@Override
public void run() {
try {
camera = Camera.open(cameraId);
prepareCameraOutputs();
if (cameraOpenListener != null) {
uiHandler.post(new Runnable() {
@Override
public void run() {
cameraOpenListener.onCameraOpened(cameraId, previewSize, currentInstance);
}
});
}
} catch (Exception error) {
Log.d(TAG, "Can't open camera: " + error.getMessage());
if (cameraOpenListener != null) {
uiHandler.post(new Runnable() {
@Override
public void run() {
cameraOpenListener.onCameraOpenError();
}
});
}
}
}
});
}
public AutoFitSurfaceView(@NonNull Context context, SurfaceHolder.Callback callback) {
super(context);
this.surfaceHolder = getHolder();
this.surfaceHolder.addCallback(callback);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public synchronized void setSurfaceView(SurfaceView view) {
mSurfaceView = view;
if (mSurfaceHolderCallback != null && mSurfaceView != null && mSurfaceView.getHolder() != null) {
mSurfaceView.getHolder().removeCallback(mSurfaceHolderCallback);
}
if (mSurfaceView != null && mSurfaceView.getHolder() != null) {
mSurfaceHolderCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// mSurfaceReady = false;
stopPreview();
L.d("Surface destroyed !");
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// mSurfaceReady = true;
createCamera(holder);
startPreview();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
L.d("Surface Changed !");
}
};
mSurfaceView.getHolder().addCallback(mSurfaceHolderCallback);
// mSurfaceReady = true;
}
}
@Override
public void onCameraOpened(Integer cameraId, Size previewSize, SurfaceHolder.Callback surfaceCallback) {
mCameraView.updateUiForMediaAction(mCameraConfigProvider.getMediaAction());
mCameraView.updateCameraPreview(previewSize, new AutoFitSurfaceView(mContext, surfaceCallback));
mCameraView.updateCameraSwitcher(getNumberOfCameras());
}
@Override
public void onCameraOpened(Integer cameraId, Size previewSize, SurfaceHolder.Callback surfaceCallback) {
cameraView.updateUiForMediaAction(configurationProvider.getMediaAction());
cameraView.updateCameraPreview(previewSize, new AutoFitSurfaceView(context, surfaceCallback));
cameraView.updateCameraSwitcher(getNumberOfCameras());
}
@Override
public void onCameraOpened(Integer openedCameraId, Size previewSize, SurfaceHolder.Callback surfaceTextureListener) {
cameraView.updateUiForMediaAction(CameraConfiguration.MEDIA_ACTION_BOTH);
cameraView.updateCameraPreview(previewSize, new AutoFitSurfaceView(cameraView.getActivity(), surfaceTextureListener));
cameraView.updateCameraSwitcher(camera2Manager.getNumberOfCameras());
}
@Override
public void onCameraOpened(Integer cameraId, Size previewSize, SurfaceHolder.Callback surfaceCallback) {
cameraView.updateUiForMediaAction(configurationProvider.getMediaAction());
cameraView.updateCameraPreview(previewSize, new AutoFitSurfaceView(cameraView.getActivity(), surfaceCallback));
cameraView.updateCameraSwitcher(getNumberOfCameras());
}
MjpegViewDefault(SurfaceView surfaceView, SurfaceHolder.Callback callback) {
this.mSurfaceView = surfaceView;
this.mSurfaceHolderCallback = callback;
init();
}
@Override
public void addCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}
@Override
public void removeCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}
@Override
public void addCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}
@Override
public void removeCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}
@Override
public void addCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}
@Override
public void removeCallback(SurfaceHolder.Callback callback) {
// Nothing to do here.
}