0

私のアプリケーションでは、Janos Gyerik の BluetoothViewerコードを使用して Bluetooth 経由で接続しています。

TCPServerUSB経由で接続 するクラスもあります。

public void connectViaUSB() {
    if (GlobalVariables.connectionstatus == 0) {
        mTCPServer = new TCPServer(2222, getCurrentActivity());
        mTCPServer.start();
        mTCPServer.setResponseReceivedListener(this);
    }

問題は、BluetoothViewerと書かれていることActivityです。接続するにはアクティビティを開始する必要がありますが、別のアクティビティに切り替えると接続が失われます。

その活動を常に維持するか、それを変更する方法を見つける必要があります。どうすればこの状況を修正できますか?

編集

`
public class MyService extends Service {

private static final String TAG = "MyService";

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onCreate");

    BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();
    mAdapter.enable();

    BluetoothChatService mChatService = new BluetoothChatService(mHandler);
    BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice("00:12:11:13:19:26");
    mChatService.connect(device);
}

@Override
public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    //stop thread
}

@Override
public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onStart");
    //start thread (again)
}

}`

このサービス クラスから Bluetooth 接続を確立するにはどうすればよいですか? mHandler を移動する必要があり、移動しました。今、私は RuntimeException: Unable to create .MyService: NullPointerException を取得しています

4

2 に答える 2

1

Service を使用して Bluetooth に接続してみてください。また、Bluetooth を使用する必要がある場合は、サービスを呼び出すだけです。これはあなたを助けることができます: http://www.vogella.com/articles/AndroidServices/article.html

于 2013-02-21T15:40:59.510 に答える
0

これが役立つかどうかはわかりませんが、Bluetooth で制御されるロボットを作成しました。サービス/スレッド内で実行されている接続を使用していました。このために、次の 2 つのクラスを使用しました。

BluetoothSerialService.java

DeviceListActivity.java

2 つのクラスをググるだけで、それらがホストされている場所が見つかります。ここみたいに。 http://code.google.com/p/bluetooth-remote-control/source/browse/trunk/src/pro/apus/blueremote/?r=2

実際に接続をセットアップするには、このようなものをボタンにバインドするだけです。

public void autoconnect() {

        t = new TextView(this);
        t = (TextView) findViewById(R.id.connecttext);
        mSerialService = new BluetoothSerialService(this, mHandlerBT, t);
        if (mSerialService.getState() == BluetoothSerialService.STATE_NONE) {
            BluetoothDevice device = BluetoothAdapter.getDefaultAdapter()
                    .getRemoteDevice(mMacAddress);
            mSerialService.connect(device);
        } else if (mSerialService.getState() == BluetoothSerialService.STATE_CONNECTED) {
            setProgressBarIndeterminateVisibility(false);
            mSerialService.stop();
            mSerialService.start();
        }
    }

そして、それを行う前に必ず許可を求めてください。

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
                .getDefaultAdapter();
        askBluetoothPermission(mBluetoothAdapter);
于 2013-02-21T15:37:30.797 に答える