Sorry If I make mistake, I'm newbie in this forum and newbie in
learning android programming

On Mar 23, 7:41 am, Lew <[email protected]> wrote:
> Hery Irawan wrote:
> > Hi, I want to create motion detection app, but I still have a problem
> > with my code
>
> You have many problems with your code. I think you're getting
> 'NullPointerException' (NPE). Do you see this in your "logcat"?
>
> As TreKing has told you (twice!) you must tell us what is wrong. "I have a
> problem" is a very useless way to ask a question.
>
> What *precisely* is the behavior you experience, and how *exactly* does it
> differ from the *exact* behaviors you expect?
>
> *Copy and paste* and error message into your report (such as the NPE
> messages you surely are getting).
>
> What have you done to diagnose your problem? (Writing to a programming
> forum doesn't count.)
>
>
>
>
>
>
>
>
>
> > Here my code:
>
> > package com.iseng;
>
> > import java.io.File;
> > import java.io.FileNotFoundException;
> > import java.io.FileOutputStream;
> > import java.io.IOException;
> > import java.io.OutputStream;
>
> > import android.app.Activity;
> > import android.content.ContentValues;
> > import android.content.pm.​ActivityInfo;
> > import android.content.res.​Configuration;
> > import android.net.Uri;
> > import android.os.Bundle;
> > import android.os.Environment;
> > import android.provider.MediaStore.​Images.Media;
> > import android.util.Log;
> > import android.view.SurfaceHolder;
> > import android.view.SurfaceView;
> > import android.widget.Toast;
> > import android.hardware.*;
> > import android.hardware.Camera.​PictureCallback;
>
> > public class IsengActivity extends Activity implements
> > SurfaceHolder.Callback, Camera.PreviewCallback, PictureCallback  {
>
> Please be consistent and conventional with indentation.  Use spaces (not
> TABs) to indent, up to four (though two works well) per level for forum
> posts.
>
> >         Camera kamera;
> >     SurfaceHolder surface;
> >     SurfaceView kameraview;
>
> The Java naming convention would suggest 'kameraView' as the variable name.
>
> >     public byte dataOld[];
>
> This is 'null' to start with (hence your NPEs) and should not be 'public'.
>
> >    public void onCreate(Bundle savedInstanceState) {
> >        super.onCreate(​savedInstanceState);
> >        setContentView(R.layout.main);
>
> > setRequestedOrientation(​ActivityInfo.SCREEN_​ORIENTATION_LANDSCAPE);
> >        kameraview =(SurfaceView) findViewById(R.id. kameraku);
> >        surface = kameraview.getHolder();
> >        surface.setType(SurfaceHolder.​SURFACE_TYPE_PUSH_BUFFERS);
> >        surface.addCallback(this);
> >    }
> >        @Override
> >        public void onPreviewFrame(byte[] data, Camera kamera) {
>
> >                if(data.length ==0) return;
>
> What if 'data == null'?
>
> >                if(dataOld.​length==0 )
>
> 'dataOld' certainly is 'null' the first time.
> NPE!
>
> >                        data=​dataOld;
>
> You forgot the curly braces around the 'if' body.
>
> If 'dataOld' is not 'null' and is empty, it will wipe out 'data' at this
> point. Is that what you want? The logic is not obvious and should be
> commented.
>
> >                int Isdiferent=0;
>
> Please follow the Java naming conventions: 'isDifferent'.
>
> >                int treshold =50;
>
> Java naming conventions would suggest 'threshold' for this variable name.
>
> >                for (int x=0; x<data.length; x=+200)
>
> Well, if somehow 'dataOld' was not 'null' and was empty, you got nothing
> here.
>
> >                {
> >                        if(​Math.abs(data[x] - dataOld[x]) <= treshold )
> >                        {
> >                              ​  Isdiferent +=1;
>
> You could also use the unary increment operator here.
>
> >                        }
>
> >                        float precentage = Isdiferent / data.length;
>
> The Java naming conventions would suggest that this variable name be
> 'percentage'.
>
> >                        if (precentage > 20 )
>
> You should use '20.0' since you're comparing floating-point values.
>
>
>
>
>
>
>
>
>
> >                        {
> >                        ​kamera.takePicture(null,null,​this);
> >                        }
>
> >                }
> >        }
>
> >        @Override
> >        public void surfaceChanged(SurfaceHolder holder, int format, int
> h, int w) {
> >                kamera.​startPreview();
> >        }
>
> >        @Override
> >        public void surfaceCreated(SurfaceHolder holder) {
> >                kamera=Camera.​open();
>
> >                try
> >                {
> >                        ​Camera.Parameters parameter =
>
> kamera.getParameters();
>
> Naming conventions would suggest that this variable be named in the plural.
>
>
>
>  if(​this.getResources().​getConfiguration().orientation !=
>
> 'this' in front of a method call is just silliness.
>
> > Configuration.ORIENTATION_​LANDSCAPE)
> >                        {
> >                              ​  parameter.set("orientation",​"portrait");
> >                              ​  kamera.​setDisplayOrientation(90);
> >                        }
>
> >                        else
> >                        {
>
>  ​  parameter.set("orientation",​"landscape");
>
> >                              ​  kamera.​setDisplayOrientation(0);
> >                        }
>
> >                        ​kamera.setParameters(​parameter);
> >                        ​kamera.setPreviewDisplay(​holder);
> >                }
>
> >                catch(​IOException e)
> >                {
> >                kamera.​release();
>
> Is this the best way to handle this exception?
>
>
>
> >            }
> >                kamera.​startPreview();
> >        }
>
> >        @Override
> >        public void surfaceDestroyed(SurfaceHolder holder) {
> >                kamera.​stopPreview();
> >                kamera.​release();
>
> >        }
>
> >        @Override
> >        public void onPictureTaken(byte[] data, Camera kamera) {
>
> What if either parameter is 'null'?
>
>
>
> >                // TODO Auto-generated method stub
>
> You should remove these auto-generated comments.
>
> >                              ​  Uri imageFileUri =
> >  getContentResolver().insert(​Media.EXTERNAL_CONTENT_URI,new
> >  ContentValues());
> >                              ​  try
>
> >                              ​  {
> >                              ​          /*String sdcardStorage =
> >  Environment.​getExternalStorageDirectory().​toString();
>
>  ​          imageFileUri=Uri.​parse(sdcardStorage + "/HeryMD/Test.jpg");*/
>
> Don't include superfluous comments in forum posts.
>
> >                              ​           String sdcardStorage =
> > Environment.​getExternalStorageDirectory().​toString();
> >                              ​           File f = new File(sdcardStorage
>
> + "/HeryMD/Test.jpg");>                              ​           OutputStream 
> os = new
>
> FileOutputStream(f);
>
> >                              ​           os.write(data);
> >                              ​           os.flush();
> >                              ​           os.close();
>
> You need to guarantee that the 'flush()' and 'close()' calls occur, which
> you have not done.
>
> >                              ​  } catch(FileNotFoundException e)
> >                              ​  {
> >                              ​          Toast t =
>
> Toast.makeText(this,e.​getMessage(),>  Toast.LENGTH_SHORT);
> >                              ​          t.show();
> >                              ​  }
>
> >                              ​  catch(IOException e)
> >                              ​  {
> >                              ​          Toast t =
>
> Toast.makeText(this,e.​getMessage(),
>
> >Toast.LENGTH_SHORT);
> >                              ​          t.show();
> >                              ​  }
>
> >                              ​  kamera.startPreview();
> >        }
> > }
>
> --
> Lew

-- 
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

Reply via email to