package com.example.administrator.blue.dome; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothServerSocket; import android.bluetooth.BluetoothSocket; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.Looper; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.blue.R; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class BlueActivity extends AppCompatActivity { private ListView listview; private TextView tv; BluetoothAdapter adapter; private List<String> mdata =new ArrayList<>(); private FoundRecevier recevier; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_blue); listview = (ListView) findViewById(R.id.show_list); tv = (TextView) findViewById(R.id.show_blueinfo); insEndle(); recevier = new FoundRecevier(); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_FOUND); filter.addAction(adapter.ACTION_DISCOVERY_FINISHED); registerReceiver(recevier, filter); setEvent(); AccecpThread accecpThread = new AccecpThread(); accecpThread.start(); } private void setEvent() { listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { String msg = mdata.get(i); String address = msg.substring(msg.indexOf(":") + 1); final BluetoothDevice remoteDevice = adapter.getRemoteDevice(address); final UUID uuid =UUID.fromString("00001111-1010-1100-0101-0088abc73456"); AlertDialog.Builder builder = new AlertDialog.Builder(BlueActivity.this); View view1 =getLayoutInflater().inflate(R.layout.item_dialog,null); final EditText et = (EditText) view1.findViewById(R.id.show_et); Button bt = (Button) view.findViewById(R.id.show_bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String msg = et.getText().toString(); try { BluetoothSocket sock = remoteDevice.createRfcommSocketToServiceRecord(uuid); sock.connect(); OutputStream outputStream = sock.getOutputStream(); outputStream.write(msg.getBytes()); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } } }); } }); } private void insEndle() { adapter =BluetoothAdapter.getDefaultAdapter(); if (adapter==null) { tv.setText("此设备没有蓝牙"); } if (!adapter.isEnabled()) { tv.setText("此设备有蓝牙,但是没有开启"); AlertDialog.Builder builder =new AlertDialog.Builder(this); builder.setTitle("提示信息"); builder.setMessage("是否开启蓝牙"); builder.setNegativeButton("取消",null); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Intent intent =new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(intent,100); } }); builder.show(); }else { tv.setText("已开启"); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==100&&resultCode== Activity.RESULT_OK) { Toast.makeText(this,"已开启",Toast.LENGTH_SHORT).show(); tv.setText("已开启了"); } } public void onClick(View view) { if (adapter.isDiscovering()) { adapter.cancelDiscovery(); } adapter.startDiscovery(); } class FoundRecevier extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(BluetoothDevice.ACTION_FOUND)) { BluetoothDevice a= intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); String name = a.getName(); String address = a.getAddress(); String msg ="设备名称"+name+"\n设备地址"+address; mdata.add(msg); } else if (action.equals(adapter.ACTION_DISCOVERY_FINISHED)){ ArrayAdapter arrayAdapter =new ArrayAdapter(BlueActivity.this,android.R.layout.simple_list_item_1,mdata); listview.setAdapter(arrayAdapter); } } } class AccecpThread extends Thread{ BluetoothServerSocket serverSocket; BluetoothSocket socket; InputStream is; public AccecpThread(){ UUID uuid = UUID.fromString("00001111-1010-1100-0101-0088abc73456"); try { serverSocket = adapter.listenUsingRfcommWithServiceRecord("Server",uuid); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { try { socket =serverSocket.accept(); while (true) { byte[] bytes =new byte[1024]; int count =is.read(bytes); String msg = new String(bytes, 0, count, "utf-8"); Looper.prepare(); Toast.makeText(BlueActivity.this,"接受的的信息"+msg,Toast.LENGTH_SHORT).show(); Looper.loop(); } } catch (IOException e) { e.printStackTrace(); } } } }