Note that there are some explanatory texts on larger screens.

plurals
  1. POaccelerometer in android
    primarykey
    data
    text
    <p>The following example is taken from internet. In all the example the code is explained using a seprate thread for sensor manager. Could you please let me know why all the accelerometer is explained with a seperate thread for SensorManager</p> <pre><code>package com.example.myapp1; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.TextView; import android.widget.Toast; public class Accelerate extends Activity implements SensorEventListener { float x, y, sensorX, sensorY; Bitmap ball; SensorManager sm; Sensor s; MyBringBackSurface ourSurfaceView; public class MyBringBackSurface extends SurfaceView implements Runnable { SurfaceHolder ourHolder; Thread ourThread = null; boolean isRunning = false; public MyBringBackSurface(Context context) { super(context); Log.i("Notice","In constructor of mybringbacksurface"); ourHolder = getHolder(); } public void pause() { isRunning = false; Log.i("Notice","In pause of mybringbacksurface"); while (true) { try { ourThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } ourThread = null; } public void resume() { Log.i("Notice","In resume of mybringbacksurface"); isRunning = true; ourThread = new Thread(this); ourThread.start(); } public void run() { // TODO Auto-generated method stub Log.i("Notice","In run of mybringbacksurface"); while (isRunning) { if (!ourHolder.getSurface().isValid()) continue; Canvas canvas = ourHolder.lockCanvas(); canvas.drawRGB(02, 02, 150); float centerX = canvas.getWidth() / 2; float centerY = canvas.getHeight() / 2; canvas.drawBitmap(ball, centerX - sensorX * 18, centerY + sensorY * 18, null); ourHolder.unlockCanvasAndPost(canvas); } } } @Override protected void onCreate(Bundle savedInstanceState) { Log.i("Notice","In oncreate of of Accelerator"); // TODO Auto-generated method stub super.onCreate(savedInstanceState); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); if (sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) { s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); sm.registerListener(this, s, SensorManager.SENSOR_DELAY_NORMAL); } ball = BitmapFactory.decodeResource(getResources(), R.drawable.greenball); x = y = sensorX = sensorY = 0; ourSurfaceView = new MyBringBackSurface(this); ourSurfaceView.resume(); setContentView(ourSurfaceView); } @Override protected void onPause() { // TODO Auto-generated method stub Log.i("Notice","In pause of Accelerator"); sm.unregisterListener(this, s); super.onPause(); ourSurfaceView.pause(); } public void onAccuracyChanged(Sensor arg0, int arg1) { // TODO Auto-generated method stub } public void onSensorChanged(SensorEvent e) { // TODO Auto-generated method stub Log.i("Notice","In sensorchanged of of Accelerator"); try { Thread.sleep(32); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } sensorX = e.values[0]; sensorY = e.values[1]; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload