質問

Android携帯電話から加速度計データを収集する必要があるので、それを行うための小さなプログラムを作成しました。

いくつかのテストの後、私は私のnexusの加速度計のレートが いつも 電話がアクティブなときに50秒、眠っているときに1秒あたり6値( PARTIAL_WAKE_LOCK)、私が求めるレートが何であれ(NORMAL, UI, GAME また FASTEST).

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

しかし、私は同じ「エラー」を取得しました。私が求めているレートが何であれ、電話がアクティブになったとき、それは常に1秒あたり50の値です。

なぜ私の電話がこのように振る舞うのかわかりません。それって問題ですか :

  • ネクサスに関連していますか?
  • 私の電話に固有の?
  • Android 4に関連していますか?

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

役に立ちましたか?

解決

さまざまなスマートフォンでいくつかのテストを実行しました。ここに結果があります:

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

テストは、部分的なウェイクロックを使用して実行されていることに注意してください。それがなければ、Nexus Sは眠っているときにデータをまったく提供しません。

また、眠っているときに互換性のあるデータを送信する(またはそうでない)アクセラメーターの有用なリストもあります。 http://www.saltwebsites.com/2012/android-Accelerometers-screen-off

他のヒント

コレクションデータはSDカードのみに記録されているため、データを取得している間、携帯電話をUSB経由でPCに接続しないでください。電話がUSBを介してPCに接続されている場合、SDカードにはファイルを保存できません。

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

残念ながら、他の回答で示唆されているように、設定する遅延(またはサンプリングレート)は、アプリケーションが必要とする最小限の提案(システム用)にすぎませんが、これは実行中の他のアプリケーションまたは電源保存で入力する他のアプリケーションによって劇的に変更される可能性があります。モード(CPUなどの電源を切る)。やや優れたサンプリングレートを取得することができた1つの方法は、サービスからデータを記録し、サービスをフォアグラウンドサービスにし、Flag 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のサービスが優先されます。前景サービスの例は、たとえば音楽プレーヤーです。

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

このアプリを確認するデバイスモデルに関係なく、14〜15でサンプリング頻度を固定しています https://market.android.com/details?id=singh.pal.ajeet&feature=search_result#?t=w251bgwsmswxldesinnpbmdolnbhbhbc5hamvldcjd支援については、developer.virtuoid@gmail.comにメールしてください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top