Hello,
I am using below code on my old Android 1.6 Mobile i m facing
problem when i click the image button
in my application image clicked and time to preview my image goes blur not
showing image which i click only show
destroy image like i click any Tv image.
and it give me 2 Error :- *native_jpeg_encode: jpeg_encoder_encode failed.*
2. *jpeg encoding failed*
Please any one help me
Thanks !!!
*My Code is here:- *
package com.info.police;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class TakePic extends Activity implements LocationListener {
private static final String TAG = "Camera";
Camera camera;
private SurfaceHolder previewHolder=null;
private Camera mCamera=null;
private SurfaceView preview=null;
Button buttonClick , btnNew;
LocationManager locationManager;
double lat , lag;
String dateNow,extStorageDirectory,ImgName,Path;
public static final int LARGEST_WIDTH = 200;
public static final int LARGEST_HEIGHT= 200;
String PImgString ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Hide the window title.
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.cameralayout);
preview=(SurfaceView)findViewById(R.id.preview);
previewHolder=preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Initialise();
btnNew.setEnabled(false);
buttonClick.setOnClickListener(new BtnClickListener());
btnNew.setOnClickListener(new BtnNewClick());
Log.d(TAG, "onCreate'd");
setTitle("Tack Image");
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//-- When we touch the screen, it will auto-focus again
if(mCamera != null)
{
mCamera.autoFocus(new Camera.AutoFocusCallback(){
public void onAutoFocus(boolean success, Camera camera)
{
}
} );
}
return super.dispatchTouchEvent(ev);
}
private void Initialise()
{
buttonClick = (Button) findViewById(R.id.buttonClick);
btnNew = (Button) findViewById(R.id.btnNew);
locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
}
class BtnClickListener implements View.OnClickListener{
public void onClick(View v) {
try {
takePicture();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
buttonClick.setEnabled(false);
btnNew.setEnabled(true);
}
}
private void takePicture() throws InterruptedException {
mCamera.takePicture(null, null, photoCallback);
Thread.sleep(3000);
}
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder)
{
mCamera=Camera.open();
try
{
mCamera.setPreviewDisplay(previewHolder);
mCamera.setOneShotPreviewCallback(null);
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(.5f);
//paint.setColorFilter(new ColorMatrixColorFilter(cm));
}
catch (Throwable t)
{
//Log.e("PictureDemo-surfaceCallback","Exception
insetPreviewDisplay()", t);
//Toast.makeText(TakePic.this,t.getMessage(),
Toast.LENGTH_LONG).show();
}
}
public void surfaceChanged(SurfaceHolder holder,int format, int
width, int height) {
Camera.Parameters parameters=mCamera.getParameters();
//parameters.setPreviewSize(100, 100);
parameters.setPictureSize(100, 100);//parameters.setZoom(1);
/*Not in 1.6*/
//parameters.setZoom(0); /*Not in 1.6*/
parameters.setPictureFormat(PixelFormat.JPEG);
//parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
/*Not in 1.6*/
//parameters.setJpegQuality(100); /*Not in 1.6*/
mCamera.setParameters(parameters);
mCamera.startPreview();
//-- Must add the following callback to allow the camera
toautofocus.
mCamera.autoFocus(new Camera.AutoFocusCallback(){
public void onAutoFocus(boolean success, Camera camera)
{
}
} );
}
public void surfaceDestroyed(SurfaceHolder holder) {
if(mCamera != null){
mCamera.stopPreview();
mCamera.release();
mCamera=null;
}
}
};
Camera.PictureCallback photoCallback=new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
ImgName = String.format("%d.jpg", System.currentTimeMillis());
//FileOutputStream outStream = null;
try {
byte[] imgBtye = data;
ColorMatrix cm = new ColorMatrix();
float contrast = 2;
float brightness = 0;
cm.set(new float[] { contrast, 0, 0, 0, brightness,0,
contrast, 0, 0, brightness,0, 0, contrast, 0, brightness, 0, 0, 0,
contrast, 0 });
Paint paint = new Paint();
cm.setSaturation(2f);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
//Log.d(TAG, "onPictureTaken - wrote bytes: " +
imgBtye.toString());
GetLocationService();
Intent i = new Intent(TakePic.this, AddDetail.class);
PImgString = new String(imgBtye);
i.putExtra("ImgString", PImgString);
i.putExtra("Pimg", imgBtye);
i.putExtra("lat", lat);
i.putExtra("lag", lag);
i.putExtra("IName", ImgName);
startActivity(i);
}
finally
{
}
}
};
class BtnNewClick implements View.OnClickListener
{
public void onClick(View v) {
mCamera.startPreview();
buttonClick.setEnabled(true);
btnNew.setEnabled(false);
}
}
public void convertDateToString()
{
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("yyyy/MM/dd");
dateNow = formatter.format(currentDate.getTime());
Log.d("Cueernt Date", "Current System Date" + dateNow);
}
private void GetLocationService()
{
locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Location location =
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if( location != null ) {
lat = location.getLatitude();
lag = location.getLongitude();
Log.d("Current Location", "Current System Location" + lat + " :
Lag " + lag);
}
else
{
Log.d("Current Location", "No Location Found");
}
}
public void onLocationChanged(Location arg0) {
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
--
Thanks and Regards,
Ankit Kasliwal
[email protected]
+91-9300-940-136
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en