2016-08-03 15 views
0

當我按下連接按鈕連接HC-06藍牙模塊(Arduino屏蔽)時,我的應用程序進入無限循環。但是,按下按鈕時,代碼中的任何地方都沒有循環。應用程序進入無限循環試圖連接到HC-06,但沒有循環存在

package dleedesign.dubcommunicationstestapp; 

import android.app.Fragment; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

import java.util.Set; 

/** 
* Created by Chris on 7/24/2016. 
*/ 
public class FirstFragment extends Fragment { 

    View myView; 

    public final String TAG = "Main"; 
    private Bluetooth bt; 
    public Button sendCommand; 
    public Button send; 
    public TextView msgReceived; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     myView = inflater.inflate(R.layout.first_layout, container, false); 

     sendCommand = (Button) myView.findViewById(R.id.sendCommand); 
     sendCommand.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       connectService(); 
      } 
     }); 
     send = (Button) myView.findViewById(R.id.send); 
     send.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       sendBtCommand("1"); 
      } 
     }); 
     msgReceived = (TextView) myView.findViewById(R.id.msgReceived); 
     msgReceived.setText("Ready to connect"); 

     bt = new Bluetooth(new MainActivity(), mHandler); 

     return myView; 
    } 

    public void sendBtCommand(String msg) 
    { 
     bt.sendMessage(msg); 
    } 

    public void connectService() 
    { 
     try { 
      msgReceived.setText("Connecting..."); 
      BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
      if(btAdapter.isEnabled()) 
      { 
       bt.start(); 
       bt.connectDevice("HC-06"); 
       Log.d(TAG, "Btservice started- listening"); 
       msgReceived.setText("Connected!"); 

      } 
      else 
      { 
       Log.w(TAG, "Btservice started - bluetooth is not enabled, requesting enable..."); 
       Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(enableBluetooth, 0); 
       msgReceived.setText("Bluetooth not enabled, requested for enable"); 
      } 
     } catch (Exception e) { 
      Log.e(TAG, "Unable to start bluetooth", e); 
      msgReceived.setText("Unable to connect: " + e); 
     } 
    } 

    private final Handler mHandler = new Handler() 
    { 
     @Override 
     public void handleMessage(Message msg) 
     { 
      switch (msg.what) 
      { 
       case Bluetooth.MESSAGE_STATE_CHANGE: 
        Log.d(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1); 
        break; 
       case Bluetooth.MESSAGE_WRITE: 
        Log.d(TAG, "MESSAGE_WRITE"); 
        break; 
       case Bluetooth.MESSAGE_READ: 
        Log.d(TAG, "MESSAGE_READ"); 
        break; 
       case Bluetooth.MESSAGE_DEVICE_NAME: 
        Log.d(TAG, "MESSAGE_DEVICE_NAME " + msg); 
        break; 
       case Bluetooth.MESSAGE_TOAST: 
        Log.d(TAG, "MESSAGE_TOAST " + msg); 
        break; 
      } 
     } 
    }; 

} 

由於某種原因,當我試圖在連接未建立時嘗試使用循環嘗試連接時突然出現此問題。我刪除了那些代碼,但是它可能仍然存在嗎?

回答

0

你是否重寫了片段的onActivityResult方法? 如果不是,請嘗試覆蓋它並在其中調用connectService(),將此添加到您的片段中: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { connectService() }