2017-08-06 10 views
-1

私はArduinoが一定のデータストリームをBluetooth経由でAndroidに送信するプロジェクトに取り組んでいます。データレートは希望よりも低く、私はボトルネックを見つけるためにArduinoとAndroidの両方のプログラムを調べていました。これが私が見つけたものです。 私は、ボトルネックはアンドロイドのBluetoothサービスとその活動の間のコミュニケーションにあると思います。ローカルブロードキャストを使用して、サービスからアクティビティへデータを送信しています.Arduinoがデータを送信しなくても、そのブロードキャストがアクティビティに継続していることに気付きました。このため、私は、ボトルネックは、私のBluetoothサービスがデータを活動に送信している状態でなければならないと結論づけました。サービスからデータをアクティビティに送る最速の方法

最初はブロードキャストマネージャを使用していましたが、ローカルのブロードキャストマネージャに切り替えて改善を見ましたが、画期的なものはありませんでした。私は、サービスからアクティビティまでデータを送信するための最速の方法を誰かが知っているのだろうかと思っていました。

答えて

0

多くの方法があります。私は

public class SomeActivity extends Activity{ 
    private MyBroadcastReceiver receiver; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     receiver = new MyBroadcastReceiver(); 
     this.registerReceiver(receiver, new IntentFilter(MyBroadcastReceiver.ACTION)); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     this.unregisterReceiver(receiver); 
    } 

    private class MyBroadcastReceiver extends BroadcastReceiver{ 
     public static final String ACTION = "com.example.ACTION_SOMETHING" 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String test = intent.getStringExtra("dataToPass"); 
     } 
    } 
} 

は、サービス・クラスでの活動に

Intent intent = new Intent(); 
intent.setAction(SomeActivity.MyBroadcastReceiver.ACTION); 
intent.putExtra("dataToPass", test); 
context.sendBroadcast(intent); 
+0

感謝を送って非常に簡単ですのでつもり使用することをお勧めします は、ええそれはおそらく役立つだろう。しかし、私は何か他のことをやめました。私はクラス内のメソッドを呼び出して、利用可能なデータがあるかどうかを確認し続けるアクティビティでasyncTaskを開始しました。これで10回以上パフォーマンスが向上しました。私の方法に否定的な側面があると思いますか? – Saik

関連する問題