Impossibility to change the rate of the accelerometer

后端 未结 4 2004
萌比男神i
萌比男神i 2021-01-06 12:13

I have to collect accelerometer data from my Android phone, so I have made a little program to do that.

After some tests, I have found that my Nexus S accelerometer\

相关标签:
4条回答
  • 2021-01-06 12:59

    I have performed some tests on different smartphones. Here are the results:

    Samsung Galaxy Teos
    -------------------
    * When awake
        Normal: 4.17 Hz
        UI: 8.43 hz
        Game: 16.93 Hz
        Fastest: 109.42 Hz
    
    * When asleep
        The phone sends null values (0), whatever the mode I chose
    
    
    Samsung Nexus S
    ---------------
    * When awake
        Normal: 49.51 Hz
        UI: 49.51 hz
        Game: 49.51 Hz
        Fastest: 49.51 Hz
    
    * When asleep
        6.06 Hz, whatever the mode I chose
    
    LG Nexus 5
    ----------
    * When awake
        Normal: 15.39 Hz
        UI: 15.4 Hz
        Game: 50.05 Hz
        Fastest: 196.74 Hz
    
    * When asleep
        Normal: 4.96 Hz
        UI: 15.41 Hz
        Game: 50.12 Hz
        Fastest: 198.53 Hz
    
    LG Nexus 4
    ----------
    * When awake
        Normal: 15.75 Hz
        UI: 15.74 Hz
        Game: 48.86 Hz
        Fastest: 195.85 Hz
    
    * When asleep
        Normal: 5.5 Hz
        UI: 15.74 Hz
        Game: 49.16 Hz
        Fastest: 196.75 Hz
    
    
    Samsung Galaxy Nexus
    --------------------
    * When awake
        Fastest: 125 Hz
    
    * When asleep
        It sends data
    
    
    Samsung Galaxy Note 2
    ---------------------
    * When awake
        Fastest: 100 Hz
    
    * When asleep
        The phone does not send anything
    
    
    Samsung Galaxy S3 and S3 Mini
    -----------------------------
    * When awake
        Fastest: 100 Hz
    
    * When asleep
        Fastest: 100 Hz
    
    
    HTC Wildfire
    ------------
    * When awake
        Normal: 4 Hz
        UI: 12 hz
        Game: 22.2 Hz
        Fastest: 38.40 Hz
    
    * When asleep
        The phone does not send anything, whatever the mode I chose
    
    
    HTC Desire
    ----------
    * When awake
        Normal: 4.36 Hz
        UI: 11.9 hz
        Game: 23.3 Hz
        Fastest: 47.27 Hz
    
    * When asleep
        The phone does not send anything, whatever the mode I chose
    

    Note that the tests have been performed using a partial wake lock. Without it, the Nexus S provides no data at all when it is asleep.

    There is also a useful list of smartphones which accelerometers send (or not) compatible data when asleep: http://www.saltwebsites.com/2012/android-accelerometers-screen-off

    0 讨论(0)
  • 2021-01-06 13:07

    check this app we have fixed sampling frequency at 14-15 irrespective of device model https://market.android.com/details?id=singh.pal.ajeet&feature=search_result#?t=W251bGwsMSwxLDEsInNpbmdoLnBhbC5hamVldCJd for any assistance mail us at developer.virtuoid@gmail.com

    0 讨论(0)
  • 2021-01-06 13:11

    Unfortunately as suggested by other answers, the delay (or sampling rate) that you set is only a suggestion (for the system) of the minimum your application requires however, this can change drastically depending on other applications running or your device entering on power saving modes (turning off cpu etc). One way I was able to get a somewhat good sampling rate was by recording my data from a service, making the service a foreground service and having a power lock with the flag PARTIAL_WAKE_LOCK.

    I put the code in this gist https://gist.github.com/julian-ramos/6ee7ad8a74ee4b442530

    That gist has way more code than you need but just pay attention to the next two methods

    @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
    //        //Power management
            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
            wl.acquire();
    .....}
    

    The above code prevents the OS to turn off the CPU

    Now to make this service a foreground service

    NotificationCompat.Builder notificationBuilder =
                    new NotificationCompat.Builder(getApplicationContext())
                            .setContentTitle("Title")
                            .setContentText("hola")
                            .setContentIntent(viewPendingIntent);
    
    
    
            NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    
            not=notificationBuilder.build();
            notificationManager.notify(notificationId,not );
            startForeground(notificationId, not);
    

    The above code makes the service a priority for the OS unlike a normal service. Examples of a foreground service are music players for instance.

    With this code I have been able to get the sampling rate I need even after the watch turn's off the screen automatically.

    0 讨论(0)
  • 2021-01-06 13:15

    Don't connect your phone to a PC via USB while taking data because during collection data is logged in the SD card only. When the phone is connected to PC via USB no file can be saved in SD card.

    So try disconnecting the USB while collecting the data.

    0 讨论(0)
提交回复
热议问题