0
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        if(seekBar.getId() == R.id.seekBar)
        {
            speed.setText(String.valueOf(progress));
            String outputData = speed.getText().toString()+","+"hey"+","+"hell"+";";

            if(streams.getOutputStream() != null && wtHandler != null)
            {
                wtHandler.sendMessage(wtHandler.obtainMessage(9999, outputData)); //wtHandler is Handler for HandlerThread's Looper

            }
            else
            {
                Log.d("RTR", "handler of output stream null");
            }
        }

私はHandlerThreadBluetooth経由でデータを送信するためにを使用しています。上記のコードSeekBarは、変更されたときにデータを送信し、その動作を示します。

上記のメソッドからの送信を実行するとonSensorChanged()、機能しません。以下のコード。

public void onSensorChanged(SensorEvent event) {
        //To change body of implemented methods use File | Settings | File Templates.
        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        {
            float accXYZ[] = event.values;

            float accX = accXYZ[0];
            float accY = accXYZ[1];
            float accZ = accXYZ[2];

            x.setText(String.format("%.2f",accX));
            y.setText(String.format("%.2f",accY));
            z.setText(String.format("%.2f",accZ));

            //String outputData = x.getText().toString()+","+speed.getText().toString()+";";
            String outputData = x.getText().toString()+";";

            if(wtHandler != null && wtHandler.getOutputStream() != null)   //add output stream null later
            {

                wtHandler.sendMessageDelayed(wtHandler.obtainMessage(9999,outputData),10);
                Log.d("RTR","Added message to the Queue");
            }
            else if(wtHandler == null)
            {
                Log.d("RTR","Worker Thread Handler not created yet");
            }
            else
            {
                Log.d("RTR","OP Stream null");
            }

何が問題なのでしょう?onSensorChanged()が呼び出される速度が疑われます。上記のコードはすべてUIスレッドで実行されており、ここからHandlerThread'sにメッセージを追加しているだけLooper Queueです。

あなたの考えをお願いします

4

1 に答える 1

0

これは、メッセージがキューに追加される速度を変更した方法であり、すべてが正常に機能するようになりました

public void onSensorChanged(SensorEvent event) {
        //To change body of implemented methods use File | Settings | File Templates.
        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        {
            float accXYZ[] = event.values;

            float accX = accXYZ[0];
            float accY = accXYZ[1];
            float accZ = accXYZ[2];

            x.setText(String.format("%.2f",accX));
            y.setText(String.format("%.2f",accY));
            z.setText(String.format("%.2f",accZ));

            try {
                //String outputData = x.getText().toString()+","+speed.getText().toString()+";";
                String outputData = x.getText().toString()+","+speed.getText().toString()+";";

                if( workerThread.getWtHandler() != null && workerThread.getWtHandler().getOutputStream() != null)   //add output stream null later
                {
                    if(System.currentTimeMillis() - time > 50)
                    {
                        workerThread.getWtHandler().sendMessage(workerThread.getWtHandler().obtainMessage(9999, outputData));
                        Log.d("RTR","Added message to the Queue");
                    }
                }
                else if(workerThread.getWtHandler() == null)
                {
                    Log.d("RTR","Worker Thread Handler not created yet");
                }
                else
                {
                    Log.d("RTR","OP Stream in Handler null");
                }
            }catch (Exception e){
                Log.d("RTR","Worker Thread not created yet");
            }
            time = System.currentTimeMillis();
于 2013-02-22T11:29:37.897 に答える