下面列出了android.hardware.Camera#PreviewCallback ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void setPreviewCallback(Camera.PreviewCallback previewCallback) {
this.previewCallback = previewCallback;
if (isOpen()) {
openCamera.getCamera().setPreviewCallback(previewCallback);
}
}
public void setPreviewCallback(Camera.PreviewCallback previewCallback) {
this.previewCallback = previewCallback;
if (isOpen()) {
openCamera.getCamera().setPreviewCallback(previewCallback);
}
}
public void setPreviewCallback(Camera.PreviewCallback callback){
cameraInfo.camera.setPreviewCallback(callback);
}
@Override
public void setOneShotPreviewCallback(Camera.PreviewCallback cb) {
camera.setOneShotPreviewCallback(cb);
}
public void setPreviewCallbackWithBuffer(Camera.PreviewCallback callback) {
_handler.obtainMessage(SET_PREVIEW_CALLBACK_WITH_BUFFER, callback).sendToTarget();
}
@Override
public void setPreviewCallback(Camera.PreviewCallback cb) {
camera.setPreviewCallback(cb);
}
public void setCamera(CameraWrapper cameraWrapper, Camera.PreviewCallback previewCallback) {
mCameraWrapper = cameraWrapper;
mPreviewCallback = previewCallback;
}
public void setOneShotPreviewCallback(Camera.PreviewCallback callback) {
if(mCamera != null) {
mCamera.setOneShotPreviewCallback(callback);
}
}
@Override
public void setCameraPreview(Camera.PreviewCallback previewCallback) {
mCamera.setPreviewCallback(previewCallback);
}
public CameraPreview(Context context, AttributeSet attrs, Camera camera, Camera.PreviewCallback previewCallback) {
super(context, attrs);
init(camera, previewCallback);
}
@Override
public void setOneShotPreviewCallback(Camera.PreviewCallback cb) {
camera.setOneShotPreviewCallback(cb);
}
/**
* 开始检测脸
*/
public void actionDetect(Camera.PreviewCallback mActivity) {
if (mCamera != null) {
mCamera.setPreviewCallback(mActivity);
}
}
/**
* Video encoding is done by a MediaCodec.
*/
@SuppressLint("NewApi")
protected void encodeWithMediaCodecMethod1() throws RuntimeException, IOException {
Log.d(TAG,"Video encoded using the MediaCodec API with a buffer");
// Updates the parameters of the camera if needed
createCamera();
updateCamera();
// Estimates the framerate of the camera
measureFramerate();
// Starts the preview if needed
if (!mPreviewStarted) {
try {
mCamera.startPreview();
mPreviewStarted = true;
} catch (RuntimeException e) {
destroyCamera();
throw e;
}
}
EncoderDebugger debugger = EncoderDebugger.debug(mSettings, mQuality.resX, mQuality.resY);
final NV21Convertor convertor = debugger.getNV21Convertor();
mMediaCodec = MediaCodec.createByCodecName(debugger.getEncoderName());
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", mQuality.resX, mQuality.resY);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, mQuality.bitrate);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, mQuality.framerate);
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,debugger.getEncoderColorFormat());
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
mMediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mMediaCodec.start();
Camera.PreviewCallback callback = new Camera.PreviewCallback() {
long now = System.nanoTime()/1000, oldnow = now, i=0;
ByteBuffer[] inputBuffers = mMediaCodec.getInputBuffers();
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
oldnow = now;
now = System.nanoTime()/1000;
if (i++>3) {
i = 0;
//Log.d(TAG,"Measured: "+1000000L/(now-oldnow)+" fps.");
}
try {
int bufferIndex = mMediaCodec.dequeueInputBuffer(500000);
if (bufferIndex>=0) {
inputBuffers[bufferIndex].clear();
convertor.convert(data, inputBuffers[bufferIndex]);
mMediaCodec.queueInputBuffer(bufferIndex, 0, inputBuffers[bufferIndex].position(), now, 0);
} else {
Log.e(TAG,"No buffer available !");
}
} finally {
mCamera.addCallbackBuffer(data);
}
}
};
for (int i=0;i<10;i++) mCamera.addCallbackBuffer(new byte[convertor.getBufferSize()]);
mCamera.setPreviewCallbackWithBuffer(callback);
// The packetizer encapsulates the bit stream in an RTP stream and send it over the network
mPacketizer.setDestination(mDestination, mRtpPort, mRtcpPort);
mPacketizer.setInputStream(new MediaCodecInputStream(mMediaCodec));
mPacketizer.start();
mStreaming = true;
}
/**
* 响应预览图像
*
* @param previewCallback
*/
public void requestPreview(Camera.PreviewCallback previewCallback) {
if (mCamera != null)
mCamera.setOneShotPreviewCallback(previewCallback);
}
/**
* See <a href="http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallbackWithBuffer%28android.hardware.Camera.PreviewCallback%29">Camera.setPreviewCallbackWithBuffer(..)</a>
*/
void setPreviewCallbackWithBuffer(Camera.PreviewCallback cb);
/**
* See <a href="http://developer.android.com/reference/android/hardware/Camera.html#setOneShotPreviewCallback%28android.hardware.Camera.PreviewCallback%29">Camera.setOneShotPreviewCallback(..)</a>
*/
void setOneShotPreviewCallback(Camera.PreviewCallback cb);
/**
* See <a href="http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallback%28android.hardware.Camera.PreviewCallback%29">Camera.setPreviewCallback(..)</a>
*/
void setPreviewCallback(Camera.PreviewCallback cb);
/**
* See <a href="http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallback%28android.hardware.Camera.PreviewCallback%29">Camera.setPreviewCallback(..)</a>
*/
void setPreviewCallback(Camera.PreviewCallback cb);
/**
* See <a href="http://developer.android.com/reference/android/hardware/Camera.html#setOneShotPreviewCallback%28android.hardware.Camera.PreviewCallback%29">Camera.setOneShotPreviewCallback(..)</a>
*/
void setOneShotPreviewCallback(Camera.PreviewCallback cb);
void setCameraPreview(Camera.PreviewCallback previewCallback);