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) } }}