Androidサービスに複数のセンサーを登録することはできません

Dawoodクラウド

アクティビティから呼び出されるサービスがあります。このサービスは、すべてのセンサーを登録し、それらに対してリスナーを登録します。

編集:onSensorChange()の2行を削除しました

**sensorManager.unregisterListener(this);
        sensorManager = null;**

そして今それは動作します。どうして?

問題は、一度に1つずつ実行すると、アプリケーションは正常に機能しますが、複数のセンサーを登録すると、アプリケーションがクラッシュすることです。

これが私のサービスのOnCreate関数です:

@Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
        Toast.makeText(getApplicationContext(),"Service Created",Toast.LENGTH_SHORT).show();
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

        //mAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mMagnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        //mGyro = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
        //      mLinearAccelertion = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);

        //sensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
        sensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_NORMAL);
        //sensorManager.registerListener(this, mGyro, SensorManager.SENSOR_DELAY_NORMAL);
        //sensorManager.registerListener(this, mLinearAccelertion, SensorManager.SENSOR_DELAY_NORMAL);


    }

これが私のonSensorChanged関数です:

    @Override
    public void onSensorChanged(SensorEvent event) {
        //Toast.makeText(mContext,"Heelooo" , Toast.LENGTH_SHORT).show();
        float[] values = event.values;
        Sensor mSensor = event.sensor;
        boolean res = CalculatePosition.calculateNewPosition(4.5F,5.3F);
        if(res){
            Toast.makeText(mContext, "Check", Toast.LENGTH_SHORT).show();
        }
        //CalculatePosition.test(event);
        sensorManager.unregisterListener(this);
        sensorManager = null;
}

MyActivityonCreate関数で次のようなサービスを開始しています。

intent = new Intent(this, CustomSensorService.class);
        startService(intent);

ログキャット

カフス

OnSensorChangedイベントがsensorManagerをNullに設定しているため、センサーが起動されるとすぐに設定できなくなります。

編集

各センサーで異なるリスナーを使用する場合は、アクティビティにメソッドを実装する代わりに、次のようなものを使用します。

private void SetupSensors() {
    sensorManager.registerListener(MagneticListener, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL);
}

private SensorEventListener MagneticListener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        // Code here
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

センサーリスナーをAndroidサービスに(登録解除)登録すると、常に機能するとは限りません

分類Dev

ディスカバリサーバにサービスを登録することができません(EUREKA)

分類Dev

サービスが Eureka に登録されるのを防ぐことができません

分類Dev

Eurekaがサービスの登録を解除することはありません

分類Dev

DockerサービスをRegistratorに登録できません

分類Dev

複数のセンサーの登録を解除する方法android

分類Dev

春のマイクロサービスをnetflixeurekaに登録できません

分類Dev

WCF Discoveryを使用して、クライアントで1つのサービス内の複数の契約を検出することはできません

分類Dev

フレンドリーなiframeにサービスワーカーを登録することはできますか?

分類Dev

新しいサービスを追加するときに、blazor.netにタイプエラーの登録済みサービスがありません

分類Dev

ハンドラーの作成時にAndroidシステムサービスを直接インスタンス化することはできません

分類Dev

Windows7でビデオプロセッサMFTをロードするときに「クラスが登録されていません」

分類Dev

HaskellWebsocketサーバーで複数のクライアントを使用することはできません

分類Dev

Eurekaクライアントがeurekaサーバーにサービスを登録できません

分類Dev

アノテーション駆動型で複数の変換サービスを登録する方法は?

分類Dev

MvvmCross、サービスを別のアセンブリに登録する方法は?

分類Dev

未登録のWordpressサイドバーを再登録することはできますか?

分類Dev

NSDサービスを登録できません

分類Dev

アセンブリスキャンで登録されたサービスを解決できません

分類Dev

Angular 5に複数のインターセプターを登録することは可能ですか?

分類Dev

Android / Javaでサービスを使用していないのに、「サービスが登録されていません」という例外が発生するのはなぜですか?

分類Dev

OpenVPNとアスタリスク-EkigaまたはEmpathyはサービスを登録できません

分類Dev

OpenVPNとアスタリスク-EkigaまたはEmpathyはサービスを登録できません

分類Dev

Yii2のRESTサービスにtockensとextrapatternを一緒に使用することはできません

分類Dev

JSONをサービスからangularJsルーティングに取得することはできません

分類Dev

ActionReducerMapを使用してレデューサーを登録する際のエラー:「タイプ 'ActionReducerMap <AppState、Action>に割り当てることができません」

分類Dev

Eurekaはdocker deployを介してec2にさまざまなサービス/ zuulを登録しませんが、ローカルマシンでのサービスの登録を許可します

分類Dev

.NET Core DependencyInjectionに「リゾルバー」を提供して、登録されていないサービスのMoqを返すことはできますか?

分類Dev

androidプログラミングで登録サービスを作るとき

Related 関連記事

  1. 1

    センサーリスナーをAndroidサービスに(登録解除)登録すると、常に機能するとは限りません

  2. 2

    ディスカバリサーバにサービスを登録することができません(EUREKA)

  3. 3

    サービスが Eureka に登録されるのを防ぐことができません

  4. 4

    Eurekaがサービスの登録を解除することはありません

  5. 5

    DockerサービスをRegistratorに登録できません

  6. 6

    複数のセンサーの登録を解除する方法android

  7. 7

    春のマイクロサービスをnetflixeurekaに登録できません

  8. 8

    WCF Discoveryを使用して、クライアントで1つのサービス内の複数の契約を検出することはできません

  9. 9

    フレンドリーなiframeにサービスワーカーを登録することはできますか?

  10. 10

    新しいサービスを追加するときに、blazor.netにタイプエラーの登録済みサービスがありません

  11. 11

    ハンドラーの作成時にAndroidシステムサービスを直接インスタンス化することはできません

  12. 12

    Windows7でビデオプロセッサMFTをロードするときに「クラスが登録されていません」

  13. 13

    HaskellWebsocketサーバーで複数のクライアントを使用することはできません

  14. 14

    Eurekaクライアントがeurekaサーバーにサービスを登録できません

  15. 15

    アノテーション駆動型で複数の変換サービスを登録する方法は?

  16. 16

    MvvmCross、サービスを別のアセンブリに登録する方法は?

  17. 17

    未登録のWordpressサイドバーを再登録することはできますか?

  18. 18

    NSDサービスを登録できません

  19. 19

    アセンブリスキャンで登録されたサービスを解決できません

  20. 20

    Angular 5に複数のインターセプターを登録することは可能ですか?

  21. 21

    Android / Javaでサービスを使用していないのに、「サービスが登録されていません」という例外が発生するのはなぜですか?

  22. 22

    OpenVPNとアスタリスク-EkigaまたはEmpathyはサービスを登録できません

  23. 23

    OpenVPNとアスタリスク-EkigaまたはEmpathyはサービスを登録できません

  24. 24

    Yii2のRESTサービスにtockensとextrapatternを一緒に使用することはできません

  25. 25

    JSONをサービスからangularJsルーティングに取得することはできません

  26. 26

    ActionReducerMapを使用してレデューサーを登録する際のエラー:「タイプ 'ActionReducerMap <AppState、Action>に割り当てることができません」

  27. 27

    Eurekaはdocker deployを介してec2にさまざまなサービス/ zuulを登録しませんが、ローカルマシンでのサービスの登録を許可します

  28. 28

    .NET Core DependencyInjectionに「リゾルバー」を提供して、登録されていないサービスのMoqを返すことはできますか?

  29. 29

    androidプログラミングで登録サービスを作るとき

ホットタグ

アーカイブ