Android 6.0 Kotlin 蓝牙扫描

package com.arci.myapplicationimport android.app.Activityimport android.os.Bundleimport android.support.design.widget.Snackbarimport android.support.v7.app.AppCompatActivityimport android.view.Menuimport android.view.MenuItemimport android.view.Viewimport kotlinx.android.synthetic.main.activity_main.*import android.widget.TextViewimport kotlinx.android.synthetic.main.content_main.*import android.bluetooth.BluetoothManagerimport android.content.Contextimport android.bluetooth.BluetoothAdapterimport android.widget.Toastimport android.content.Intentimport android.text.method.TextKeyListener.clearimport android.bluetooth.BluetoothDeviceimport android.bluetooth.le.BluetoothLeScannerimport android.content.BroadcastReceiverimport android.content.IntentFilterclass MainActivity : AppCompatActivity() {    val REQUEST_BLUETOOTH_TURN_ON = 1    lateinit var bluetoothAdapter: BluetoothAdapter    lateinit var bluetoothManager: BluetoothManager    var bluetoothDeviceList = ArrayList<BluetoothDevice>()    // 广播接收发现蓝牙设备    private val mReceiver = object : BroadcastReceiver() {        override fun onReceive(context: Context, intent: Intent) {            val action = intent.action            if (BluetoothAdapter.ACTION_DISCOVERY_STARTED == action) {                //Log.d(FragmentActivity.TAG, "开始扫描...")                Toast.makeText(context.applicationContext, "蓝牙扫描开始", Toast.LENGTH_SHORT).show()            }            if (BluetoothDevice.ACTION_FOUND == action) {                val device = intent.getParcelableExtra<BluetoothDevice>(BluetoothDevice.EXTRA_DEVICE)                if (device != null) {                    // 添加到ListView的Adapter。                    //mAdapter.add("设备名:" + device.name + "\n设备地址:" + device.address)                    //mAdapter.notifyDataSetChanged()                    Toast.makeText(context.applicationContext, device.name + ": " + device.address, Toast.LENGTH_SHORT).show()                }            }            if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED == action) {                //Log.d(FragmentActivity.TAG, "扫描结束.")                Toast.makeText(context.applicationContext, "蓝牙扫描结束", Toast.LENGTH_SHORT).show()            }        }    }    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        setSupportActionBar(toolbar)        fab.setOnClickListener { view ->            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)                    .setAction("Action", null).show()        }        // 注册广播接收器。        // 接收蓝牙发现        val filterFound = IntentFilter(BluetoothDevice.ACTION_FOUND)        registerReceiver(mReceiver, filterFound)        val filterStart = IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED)        registerReceiver(mReceiver, filterStart)        val filterFinish = IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)        registerReceiver(mReceiver, filterFinish)        //蓝牙管理,这是系统服务能够经过getSystemService(BLUETOOTH_SERVICE)的方法获取实例        bluetoothManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager        //经过蓝牙管理实例获取适配器,而后经过扫描方法(scan)获取设备(device)        bluetoothAdapter = bluetoothManager.adapter        if (!bluetoothAdapter.isEnabled) {            val bluetoothTurnOn = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)            startActivityForResult(bluetoothTurnOn, REQUEST_BLUETOOTH_TURN_ON)        } else {            bluetoothAdapter.startDiscovery();        }    }    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {        super.onActivityResult(requestCode, resultCode, data)        when (requestCode) {            REQUEST_BLUETOOTH_TURN_ON->{                when (resultCode) {                    RESULT_OK->{                        //TextView1.text = "蓝牙开启成功"                        Toast.makeText(this.applicationContext, "蓝牙开启成功", Toast.LENGTH_SHORT).show()                        bluetoothAdapter.startDiscovery()                    }                    RESULT_CANCELED->{                        //TextView1.text = "蓝牙开启失败"                        Toast.makeText(this.applicationContext, "蓝牙开启失败", Toast.LENGTH_SHORT).show()                    }                }            }        }    }    override fun onCreateOptionsMenu(menu: Menu): Boolean {        // Inflate the menu; this adds items to the action bar if it is present.        menuInflater.inflate(R.menu.menu_main, menu)        return true    }    override fun onOptionsItemSelected(item: MenuItem): Boolean {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        return when (item.itemId) {            R.id.action_settings -> true            else -> super.onOptionsItemSelected(item)        }    }}
相关文章
相关标签/搜索