skip to main | skip to sidebar

Android Development Tutorial

Pages

  • Home
 
  • RSS
  • Twitter
Related Posts Plugin for WordPress, Blogger...
Monday, October 8, 2012

Accelerometer management for the Android devices

Posted by Raju Gupta at 12:44 PM – 0 comments
 
This code uses the different methods using SensorListener and SensorManager.
import android.content.Context;
import android.hardware.SensorListener;
import android.hardware.SensorManager;

/**
 * The accelerometer manager class
 */
public class AccelerometerManager implements SensorListener
{

 // The unique instance of AccelerometerManager
 private static AccelerometerManager m_oInstance = null; 

 // Object use to synchronize access to the data
 private static Object m_oLock = new Object();

 // Current acceleration on x, y and z axis
 private static float m_fX;
 private static float m_fY;
 private static float m_fZ;

 // Is the accelerometer manager started?
 private static boolean m_bIsStarted = false;

 /**
  * Initialize the accelerometer manager
  * CAUTION : This method must be called before any call to the getX/Y/Z methods
  */
 public static void initialize()
 {
  if (m_bIsStarted)
  {
   return;
  }
  SensorManager oSensorManager =  (SensorManager)Globals.m_oRichMediaDriver.m_oContext.getSystemService(Context.SENSOR_SERVICE);
  m_oInstance = new AccelerometerManager();
  oSensorManager.registerListener(m_oInstance, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_UI);

  m_bIsStarted = true;
 }

 /**
  * Release the accelerometer manager
  * CAUTION : This method must be called when the accelerometer is not needed anymore,
  *           else the system would continue to send acceleration events uselessly 
  * @param oContext the Context 
  */
 public static void release(Context oContext)
 {
  if (!m_bIsStarted)
  {
   return;
  }
  SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
  oSensorManager.unregisterListener(m_oInstance);
  m_oInstance = null;

  m_bIsStarted = false;
 }

 /**
  * The onPause CB must be called when the Context is paused
  * @param oContext the Context
  */
 public static void onPause(Context oContext)
 {
  if (m_bIsStarted)
  {
   // Unregister listener
   SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
   oSensorManager.unregisterListener(m_oInstance);
  }
 }

 /**
  * The onPause CB must be called when the Context is resumed
  * @param oContext the Context
  */
 public static void onResume(Context oContext)
 {
  if (m_bIsStarted)
  {
   // register listener
   SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
   oSensorManager.registerListener(m_oInstance, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_UI);
  }
 }

 /**
  * @return the deci-g acceleration in the x axis
  */
 public static int getX()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fX/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 /**
  * @return the deci-g acceleration in the y axis
  */
 public static int getY()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fY/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 /**
  * @return the deci-g acceleration in the z axis
  */
 public static int getZ()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fZ/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 ////////////////////////
 // SensorListener part /
 ////////////////////////
 public void onAccuracyChanged(int sensor, int accuracy)
 {
 }

 public void onSensorChanged(int sensor, float[] values)
 {
  synchronized(m_oLock)
  {
   m_fX = values[SensorManager.DATA_X];
   m_fY = values[SensorManager.DATA_Y];
   m_fZ = values[SensorManager.DATA_Z];
  }
 }
}

Email This BlogThis! Share to X Share to Facebook

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments (Atom)

More Technical Blogs

  • Tech Savvy - Technology Tips
  • PHP Video Tutorial
  • Java Programs with Output
  • C Programming Tutorial
  • Linux Tutorial
  • Language Tutorial
  • Web Development tutorial
  • Popular
  • Recent
  • Archives

Popular Posts

  • How to Program for Android: Video Tutorial 7 - Change you application Icon
    How to Change your application icon. Low density -- ldpi -- 36×36 px Medium density -- mdpi -- 48×48 px (correct size if only one drawa...
  • Android Dynamically generating views
    This code snippet will generate the textview and button at run time. //The layout LinearLayout01 should be predefined.In this layout you...
  • Reordering of listview
    Listview rows order can be changed using drag and drop functionality.Dragging should be enabled beyond the visible listview position. ...
Powered by Blogger.

Archives

  • ▼  2012 (44)
    • ▼  October (31)
      • Reordering of listview
      • Text-to-Speech capability for Android Devices
      • Android Stub uninstalling the existing client and ...
      • Tab creation in android screen
      • ListView Recordering by drag drop in Android
      • Android app for SimpleWiktionary
      • App in android for random quote generation
      • Implementing ListView-Adapter in Android
      • Extract all java classes from APK
      • Get XML from APK
      • Sending SMS from the Android Application
      • How to create Drop Down in Android
      • Android Page Navigation
      • To retrieve the cell info for Android device
      • Creating the enrty in the agenda for Android devices.
      • Test Application for Samsung Android devices
      • Color Picker from Image in Android
      • Image Switcher & Gallery in Android
      • Andorid application that listens to incoming sms
      • Accelerometer management for the Android devices
      • Alert box for Confirm
      • 3D Rotation in Android
      • Custom Bar Control for Android using Java
      • Creating Layouts TableRows and TextViews dynamical...
      • Android SeekBar
      • Dialing phone number from Google Android Application
      • Login Screen Creation using Android
      • Add a Progress Bar to Android based Mobile Screens
      • Adding a button to Android based mobile screens
      • Android Dynamically generating views
      • Timezone converter
    • ►  September (3)
    • ►  March (1)
    • ►  February (9)
  • ►  2011 (69)
    • ►  December (69)
 

Followers

Labels

  • Activities (9)
  • Andoird Menu (2)
  • Android timelineActivity. (1)
  • Android Adapter (1)
  • Android app (9)
  • Android App Inventor (1)
  • Android App Publishing (2)
  • Android Application Components (3)
  • Android Application Fundamental (2)
  • Android Architecture (1)
  • Android AsyncTask (1)
  • Android Basic (7)
  • Android Bootcamp Training (18)
  • Android Button Widget (3)
  • Android Custom Style (1)
  • Android Dialog (1)
  • Android Drawable (2)
  • Android Environment (1)
  • Android example (9)
  • Android File System (2)
  • Android Geolocation (2)
  • Android ImageView (1)
  • Android Installation (8)
  • Android intents (5)
  • Android lifecycle (1)
  • Android LIst (4)
  • Android Listener (4)
  • Android Manifest (3)
  • Android Market (1)
  • Android Notification (1)
  • Android Object (1)
  • Android Package File (1)
  • Android Platform (1)
  • Android service (4)
  • Android StatusActivity (1)
  • Android Theme Style (3)
  • Android Traceview (1)
  • Android UI (6)
  • Android Unit Testing (1)
  • Android Widget (4)
  • AndroidManifest.xml (4)
  • Application Icon (1)
  • Broadcast Receiver (2)
  • Content Providers (1)
  • Creating Activities (1)
  • Creating Custom Styles in Android (1)
  • Creating Multiple Activities (1)
  • Database (3)
  • draw9patch (1)
  • Eclipse (12)
  • Explicit Intents (2)
  • Explicit Intents Example (1)
  • Hello world with Android (1)
  • Helloworld with Android (5)
  • Implicit Intents (2)
  • Implicit Intents Example (1)
  • Layout View (3)
  • lifemichael (8)
  • Location Sensor (1)
  • Multiple Activities (2)
  • Netbeans (1)
  • OpenGL ES Graphics (1)
  • Passing Values with Intents (2)
  • Project Structure (1)
  • Retrieving Image URI from Intents (1)
  • Setting Android Environment (1)
  • SQLite (3)
  • TGENT (8)
  • UserGroupAtGoogle (8)
  • XML (1)
  • xtensive arts Training (11)
 
 
© 2011 Android Development Tutorial | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger