3

Android フォンから加速度計のデータを収集する必要があるため、そのための小さなプログラムを作成しました。

いくつかのテストの後、Nexus S 加速度計の速度は、電話がアクティブなときは常に1 秒あたり 50 値であり、スリープ状態のときは 1 秒あたり 6 値であることがわかりましたPARTIAL_WAKE_LOCK( ) 。 .NORMALUIGAMEFASTEST

そこで、加速度計の速度をテストするインターネットで見つかったアプリケーションをインストールすることにしました: http://samoht.fr/tuto/accelerometers-frequency-on-android-with-code

しかし、同じ「エラー」が発生しました。要求するレートが何であれ、電話がアクティブな場合は常に 1 秒あたり 50 の値です。

なぜ私の電話がこのように動作するのか理解できません。それって問題ですか :

  • ネクサスSに関連?
  • 私の電話に固有ですか?
  • Android 4に関連?

編集:別のNexus S(Android 4)でプログラムをテストしましたが、同じ問題があります。したがって、上記の可能性のうちの 1 つを排除しているように見えます。これは、私の電話だけに関係するものではありません。

4

4 に答える 4

6

さまざまなスマートフォンでいくつかのテストを実行しました。結果は次のとおりです。

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

テストは部分的な wake lock を使用して実行されていることに注意してください。それがなければ、Nexus S はスリープ状態のときにデータをまったく提供しません。

スリープ中に加速度計が互換性のあるデータを送信する (または送信しない) スマートフォンの便利なリストもあります: http://www.saltwebsites.com/2012/android-accelerometers-screen-off

于 2012-03-17T08:35:17.367 に答える
3

収集中はSDカードにのみデータが記録されるため、データの取得中はUSB経由で携帯電話をPCに接続しないでください。電話機がUSB経由でPCに接続されている場合、SDカードにファイルを保存することはできません。

したがって、データを収集している間、USBを切断してみてください。

于 2012-03-07T15:33:49.803 に答える
1

残念ながら、他の回答で示唆されているように、設定した遅延 (またはサンプリング レート) は、アプリケーションが必要とする最小値の (システムに対する) 提案にすぎませんが、これは、実行中の他のアプリケーションやデバイスが省電力状態になることによって大幅に変化する可能性があります。モード(CPUをオフにするなど)。ある程度良いサンプリング レートを得ることができた 1 つの方法は、サービスからデータを記録し、サービスをフォアグラウンド サービスにして、フラグ PARTIAL_WAKE_LOCK で電源ロックを設定することでした。

この要点にコードを入れました https://gist.github.com/julian-ramos/6ee7ad8a74ee4b442530

その要点には必要以上のコードがありますが、次の 2 つのメソッドに注意してください

@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();
.....}

上記のコードは、OS が CPU をオフにするのを防ぎます。

次に、このサービスをフォアグラウンド サービスにします

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

上記のコードは、通常のサービスとは異なり、サービスを OS の優先事項にします。フォアグラウンド サービスの例としては、音楽プレーヤーなどがあります。

このコードを使用すると、時計が自動的に画面をオフにした後でも、必要なサンプリング レートを取得できました。

于 2015-07-21T18:46:54.413 に答える
0

このアプリは、デバイス モデルに関係なく 14 ~ 15 でサンプリング周波数が固定されていることを確認してください 。 virtuoid@gmail.com

于 2012-02-29T10:04:21.107 に答える