Impossibility to change the rate of the accelerometer

女生的网名这么多〃 提交于 2019-11-30 23:21:27

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

aps109

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.

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.

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!