package
com.joy.testnativecamera;
import
java.io.IOException;
import
android.graphics.Bitmap;
import
android.hardware.Camera;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Context;
import
android.util.Log;
import
android.view.Menu;
import
android.view.SurfaceHolder;
import
android.view.SurfaceView;
import
android.view.Window;
import
android.widget.ImageView;
public
class
MainActivity
extends
Activity {
ImageView mImageview;
private
Preview mPreview;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mPreview =
new
Preview(
this
);
setContentView(mPreview);
mImageview = (ImageView) findViewById(R.id.imageView1);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return
true
;
}
}
class
Preview
extends
SurfaceView
implements
SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
boolean
mPreviewState;
private
Bitmap prBitmap;
private
MainActivity _MActivity=
null
;
protected
boolean
toggle=
false
;
int
width =
0
, height =
0
;
static
{
System.loadLibrary(
"histogram"
);
}
private
native
void
HISTOGRAMCOMPRESS(Bitmap _outBitmap,
byte
[] _in);
Preview(MainActivity aaaaa) {
super
(aaaaa);
_MActivity = aaaaa;
mHolder = getHolder();
mHolder.addCallback(
this
);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public
void
surfaceCreated(SurfaceHolder holder) {
try
{
mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
mCamera.setPreviewCallback(
new
Camera.PreviewCallback() {
@Override
public
void
onPreviewFrame(
byte
[] data, Camera camera) {
Camera.Parameters params = camera.getParameters();
width = params.getPreviewSize().width;
height = params.getPreviewSize().height;
prBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
HISTOGRAMCOMPRESS(prBitmap, data);
<span style=
"color: rgb(255, 0, 0);"
>_MActivity.mImageview.setImageBitmap(prBitmap);</span>
}
});
}
catch
(IOException exception) {
mCamera.release();
mCamera =
null
;
}
}
public
void
surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera =
null
;
}
public
void
surfaceChanged(SurfaceHolder holder,
int
format,
int
w,
int
h) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}