質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

Android 別端末にBlutetooth接続できない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 112

y.nakamura

score 183

Androidから別端末へBluetooth接続し、メッセージを送信するアプリケーションを作成しています。

AndroidアプリのSerial Bluetooth Terminalを使用すると端末に接続できるのですが、自作アプリだと接続できないのでご助力お願いします。

Serial Bluetooth Terminalでは機器をスキャンした後に以下の内容で接続すると、通信を開始できました。

 ITEM   VALUE 
 MAC ADDRESS   90:FD:9F:A5:F4:2A 
 Service UUID   4880c12c-fdcb-4077-8920-a450d7f9b907 
 Read characteristic UUID   fec26ec4-6d71-4442-9f81-55bc21d658d6 
 Write characteristic UUID   fec26ec4-6d71-4442-9f81-55bc21d658d6 

以下ソースコードです。ボタンを押したら接続を開始します。

MainActivity.kt

class MainActivity : AppCompatActivity() {

    companion object {
        const val MAC_ADDRESS = "90:FD:9F:A5:F4:2A"
        const val SERVICE_UUID = "4880c12c-fdcb-4077-8920-a450d7f9b907"
        const val READ_CHARACTERISTIC_UUID = "fec26ec4-6d71-4442-9f81-55bc21d658d6"
        const val WRITE_CHARACTERISTIC_UUID = "fec26ec4-6d71-4442-9f81-55bc21d658d6"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        // Setup the window
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setResult(Activity.RESULT_CANCELED)

        button_connect.setOnClickListener {
            bt_connect()
        }
    }

    private fun bt_connect(){

        val btAdapter = BluetoothAdapter.getDefaultAdapter()

        //端末がBluetoothに対応しているか
        if (btAdapter == null) {
            Toast.makeText(this, "Bluetooth対応機器ではありません", Toast.LENGTH_SHORT).show()
            return
        }
        //Bluetoothが有効であるか
        if (!btAdapter.isEnabled) {
            Toast.makeText(this, "BluetoothをONにします", Toast.LENGTH_SHORT).show()
            btAdapter.enable()
        }

        // Device検索
        val btDevice = btAdapter.getRemoteDevice(MAC_ADDRESS)

        //接続確立待機
        try {
            Thread.sleep(2000)
        } catch (e: InterruptedException) {
            e.printStackTrace()
            return
        }

        // 接続
        var btSocket: BluetoothSocket? = null
        try {
            btSocket = btDevice.createRfcommSocketToServiceRecord(UUID.fromString(SERVICE_UUID))
            btSocket.connect()
        } catch (e: IOException) {
            Toast.makeText(applicationContext, "接続失敗しました", Toast.LENGTH_SHORT).show()
            e.printStackTrace()
            return
        }

        // メッセージ送信
        try{
            val outputStream : OutputStream = btSocket.outputStream
            outputStream.write("Test".toByteArray())
        } catch (e: IOException) {
            Toast.makeText(applicationContext, "送信失敗しました", Toast.LENGTH_SHORT).show()
            e.printStackTrace()
            return
        }

        Toast.makeText(applicationContext, "送信しました", Toast.LENGTH_SHORT).show()
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_margin="10dp"
              android:orientation="vertical">

    <Button
            android:id="@+id/button_connect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Connect"
            android:textSize="18sp"/>
</LinearLayout>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る