Hi,

You might also need a partial wake lock to keep cpu running when
device goes to sleep. Check that you service restarts ok after it is
killed & restarted by OS.

Regards

On Apr 11, 2:43 am, Kristopher Micinski <[email protected]>
wrote:
> You can't run your app forever, it will get killed when memory is low, you
> can't really avoid it (on a non rooted device): apps aren't meant to run and
> consume resources forever.
>
> And I don't think that dumping a large amount of code at people is going to
> help, unless you can pinpoint your problem a little bit and try to narrow
> what you think is going wrong.  Try instead thinking of what ways you can
> change the structure of your application to make it work to the android
> platform a little bit better.
>
> I understand that you want to have the app recording forever in the
> background, but is this even practical?  I'm not sure... I think at least
> the phone will run out of power much more quickly...
>
> It's too bad uneducated bosses push these types of projects on people
> without knowing what capabilities the platform has, though.
>
> Kris
>
> On Sat, Apr 9, 2011 at 9:47 AM, [email protected] <
>
>
>
>
>
>
>
> [email protected]> wrote:
> > I'm creating an android application which act like a car blackbox, but
> > i run into problem as soon i start doing it, maybe partly because i'm
> > new to android/java but i've given 6more weeks to develop this
> > app... :'(
>
> > But get back to my problem i had my service run the video recording
> > processes in the background so i should be able to leave the app for a
> > while and come back to the Video recording GUI with the surfaceview
> > but my application was force to close when i return to the app. So is
> > the problem related to onResume() method or something else? If its yes
> > what i should do in order to get my application GUI to return to the
> > video recording surfaceview and still running the background recording
> > using the service rather than giving me an error?
>
> > Can someone please help me, i've really exhausted all ideas and to
> > make it worse i'm new to java/android thus making me very headache, i
> > really need some experience programmer to help me solve the
> > problem...
>
> > public class CameraTest extends Activity implements
> > SurfaceHolder.Callback {
>
> >        private static final String TAG = "Exception";
>
> >        public static SurfaceView surfaceView;
> >        public static SurfaceHolder surfaceHolder;
> >        public static Camera MainCamera;
> >        public static boolean previewRunning;
>
> >    @Override
> >    public void onCreate(Bundle savedInstanceState) {
> >        super.onCreate(savedInstanceState);
> >        setContentView(R.layout.main);
>
> >        surfaceView = (SurfaceView)findViewById(R.id.surface_camera);
> >        surfaceHolder = surfaceView.getHolder();
> >        surfaceHolder.addCallback(this);
>
> > surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
>
> >        Button btnStart = (Button) findViewById(R.id.button4);
> >        btnStart.setOnClickListener(new View.OnClickListener()
> >        {
> >                public void onClick(View v)
> >                {
> >                        startService(new Intent(getApplicationContext(),
> > ServiceRecording.class));
> >                }
> >        });
>
> >        Button btnStop = (Button) findViewById(R.id.button5);
> >        btnStop.setOnClickListener(new View.OnClickListener()
> >        {
> >                public void onClick(View v)
> >                {
> >                        stopService(new Intent(getApplicationContext(),
> > ServiceRecording.class));
> >                }
> >        });
> >    }
>
> >    @Override
> >    public void surfaceCreated(SurfaceHolder holder) {
> >        MainCamera = Camera.open();
> >        if (MainCamera != null) {
> >                Camera.Parameters params = MainCamera.getParameters();
> >                MainCamera.setParameters(params);
> >        }
> >        else {
> >                Toast.makeText(getApplicationContext(), "Camera not
> > available!",
> > Toast.LENGTH_LONG).show();
> >                finish();
> >        }
> >    }
>
> >    @Override
> >    public void surfaceChanged(SurfaceHolder holder, int format, int
> > width, int height) {
> >        if (previewRunning) {
> >                MainCamera.stopPreview();
> >        }
>
> >        Camera.Parameters p = MainCamera.getParameters();
> >        p.setPreviewSize(320, 240);
> >        p.setPreviewFormat(PixelFormat.JPEG);
> >        MainCamera.setParameters(p);
>
> >        try {
> >                MainCamera.setPreviewDisplay(holder);
> >                MainCamera.startPreview();
> >                previewRunning = true;
> >        }
> >        catch (IOException e) {
> >                Log.e(TAG,e.getMessage());
> >                e.printStackTrace();
> >        }
> >    }
>
> >    @Override
> >    public void onResume(){
> >        super.onResume();
>
> >    }
>
> >    @Override
> >    public void surfaceDestroyed(SurfaceHolder holder){
> >                MainCamera.stopPreview();
> >                previewRunning = false;
> >                MainCamera.release();
> >    }
> >  }
>
> > My RecordingService.java Service file
> > public class ServiceRecording extends Service {
>
> >        @Override
> >        public IBinder onBind(Intent intent) {
> >                // TODO Auto-generated method stub
> >                return null;
> >        }
>
> >        private SurfaceView surfaceView;
> >        private SurfaceHolder surfaceHolder;
> >        public static Camera ServiceCamera;
> >        private boolean RecordingStatus;
> >        private MediaRecorder mediaRecorder;
> >    private final int maxDurationInMs = 20000;
>
> >    private static final String TAG = "Exception";
>
> >    @Override
> >    public void onCreate() {
> >        super.onCreate();
>
> >        RecordingStatus = false;
> >        ServiceCamera = CameraTest.MainCamera;
> >        surfaceView = CameraTest.surfaceView;
> >        surfaceHolder = CameraTest.surfaceHolder;
> >    }
>
> >    @Override
> >    public int onStartCommand(Intent intent, int flags, int startId) {
> >        super.onStartCommand(intent, flags, startId);
> >        if (RecordingStatus == false)
> >                startRecording();
>
> >        return START_STICKY;
> >    }
>
> >    @Override
> >    public void onDestroy() {
> >        super.onDestroy();
>
> >        stopRecording();
> >        RecordingStatus = false;
> >    }
>
> >    public boolean startRecording(){
> >        try {
> >                        Toast.makeText(getBaseContext(), "Recording
> > Started",
> > Toast.LENGTH_SHORT).show();
> >                        try{
> >                                ServiceCamera.unlock();
> >                        }
> >                        catch(Exception e){
>
> >                                ServiceCamera.reconnect();
> >                        }
>
> >                        mediaRecorder = new MediaRecorder();
>
> >                        mediaRecorder.setCamera(ServiceCamera);
>
> >  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
>
> >  mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
>
> > mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
>
> >                        mediaRecorder.setMaxDuration(maxDurationInMs);
>
> > mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
>
> > mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
>
> >                                //
> > mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
> >                                DateFormat dateFormat = new
> > SimpleDateFormat("yyyy-MM-dd
> > HH_mm_ss");
> >                                Date date = new Date();
> >                                File directory = new
> > File(Environment.getExternalStorageDirectory() + "/VideoList");
>
> >                                if(!(directory.exists()))
> >                                        directory.mkdir();
>
> >                                File FileSaved = new
> > File(Environment.getExternalStorageDirectory() + "/VideoList",
> > dateFormat.format(date) + ".3gp");
>
> >  mediaRecorder.setOutputFile(FileSaved.getPath());
>
> > mediaRecorder.setVideoSize(surfaceView.getWidth(),surfaceView.getHeight());
>
> >  //mediaRecorder.setVideoFrameRate(videoFramesPerSecond);
>
> >  mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
>
> >                                mediaRecorder.prepare();
> >                                mediaRecorder.start();
>
> >                                RecordingStatus = true;
>
> >                                return true;
> >        }
>
> >        catch (IllegalStateException e) {
> >                Log.d(TAG,e.getMessage());
> >                e.printStackTrace();
> >                return false;
> >        }
> >        catch (IOException e) {
> >                Log.d(TAG,e.getMessage());
> >                e.printStackTrace();
> >                return false;
> >        }
> >    }
>
> >    public void stopRecording() {
> >        Toast.makeText(getBaseContext(), "Recording Stopped",
> > Toast.LENGTH_SHORT).show();
> >        mediaRecorder.stop();
>
> >        try {
> >                ServiceCamera.reconnect();
> >                } catch (IOException e) {
> >                        e.printStackTrace();
> >                }
> >        RecordingStatus = false;
> >    }
> > }
>
> > --
> > 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

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