lanya2

编程入门 行业动态 更新时间:2024-10-25 06:21:24

lanya2

lanya2

文章目录

    • activity
      • 客户
      • 服务

activity

package com.example.bluethooth_exe;import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.os.Parcelable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import com.example.bluethooth_exe.adapter.MyAdapter;
import com.example.bluethooth_exe.adapter.MyAdapter1;
import com.example.bluethooth_exe.listener.MyItemClickListener;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;public class MainActivity extends AppCompatActivity {private UUID uuid = UUID.fromString("00001106-0000-1000-8000-00805F9B34FB");//蓝牙通讯规范private Button open;private Button close;private Button show;private Button search;private RecyclerView recl1;private RecyclerView recl2;private MyReciver myReciver;public static BluetoothSocket socket;private MyAdapter adapter;private MyAdapter1 adapter1;private List<BluetoothDevice> list = new ArrayList<>();private List<BluetoothDevice> list1 = new ArrayList<>();private BluetoothManager manager;private BluetoothAdapter bluetoothAdapter;private String[] QUANXIAN = {Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.BLUETOOTH,Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(QUANXIAN, 100);}manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);bluetoothAdapter = manager.getAdapter();initView();myReciver = new MyReciver();IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(BluetoothDevice.ACTION_FOUND);registerReceiver(myReciver, intentFilter);}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(myReciver);}private void initView() {open = (Button) findViewById(R.id.open);close = (Button) findViewById(R.id.close);show = (Button) findViewById(R.id.show);search = (Button) findViewById(R.id.search);recl1 = (RecyclerView) findViewById(R.id.recl1);recl2 = (RecyclerView) findViewById(R.id.recl2);adapter = new MyAdapter(list, this);recl1.setAdapter(adapter);recl1.setLayoutManager(new LinearLayoutManager(this));adapter1 = new MyAdapter1(list1, this);recl2.setAdapter(adapter1);recl2.setLayoutManager(new LinearLayoutManager(this));open.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(bluetoothAdapter.ACTION_REQUEST_ENABLE);intent.setAction(bluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);intent.putExtra(bluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);startActivityForResult(intent, 100);}});close.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {bluetoothAdapter.disable();}});adapter.setListener(new MyItemClickListener() {@Overridepublic void onItemClick(int position) {try {socket = list.get(position).createInsecureRfcommSocketToServiceRecord(uuid);socket.connect();if (socket.isConnected()) {Intent intent = new Intent(MainActivity.this, Main2Activity.class);startActivity(intent);} else {Toast.makeText(MainActivity.this, "连接失败", Toast.LENGTH_SHORT).show();}} catch (IOException e) {Toast.makeText(MainActivity.this, "连接失败", Toast.LENGTH_SHORT).show();}}});show.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list.clear();Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();list.addAll(devices);adapter.notifyDataSetChanged();}});search.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list1.clear();bluetoothAdapter.startDiscovery();}});adapter1.setListener(new MyItemClickListener() {@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void onItemClick(int position) {list1.get(position).createBond();}});}class MyReciver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(BluetoothDevice.ACTION_FOUND)) {BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);list1.add(device);adapter1.notifyDataSetChanged();}}}
}

客户

package com.example.bluethooth_exe;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.concurrent.TimeUnit;public class Main2Activity extends AppCompatActivity {private EditText et;private Button btSend;private Button btFile;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);initView();}private void initView() {et = (EditText) findViewById(R.id.et);btSend = (Button) findViewById(R.id.bt_send);btFile = (Button) findViewById(R.id.bt_file);btSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {sendMessage();}});btFile.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {sendFile();}});}private void sendFile() {new Thread(new Runnable() {@Overridepublic void run() {try {FileInputStream fis = new FileInputStream("/sdcard/DCIM/Camera/B612Kaji_20190701_154908_569.jpg");OutputStream os = MainActivity.socket.getOutputStream();byte[] bytes = new byte[1024];int len = 0;while ((len = fis.read(bytes)) != -1) {os.write(bytes, 0, len);}fis.close();os.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}).start();}private void sendMessage() {String s = et.getText().toString();if (TextUtils.isEmpty(s)) {Toast.makeText(this, "文本不能为空", Toast.LENGTH_SHORT).show();return;} else {try {MainActivity.socket.getOutputStream().write(s.getBytes());Toast.makeText(this, "发送成功!", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}}}
}

服务

package com.example.app_server;import android.Manifest;
import android.annotation.SuppressLint;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;import java.io.IOException;
import java.util.UUID;public class MainActivity extends AppCompatActivity {private Button btServer;private ProgressBar progressview;private UUID uuid = UUID.fromString("00001106-0000-1000-8000-00805F9B34FB");//蓝牙通讯规范private BluetoothManager manager;private BluetoothAdapter bluetoothAdapter;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 101:int press = (int) msg.obj;break;}}};private String[] QUANXIAN = {Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.BLUETOOTH,Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};@SuppressLint("ServiceCast")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(QUANXIAN, 100);}initView();manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);bluetoothAdapter = manager.getAdapter();}private void initView() {progressview = (ProgressBar) findViewById(R.id.progressview);btServer = (Button) findViewById(R.id.bt_server);btServer.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {server();}});}private void server() {new Thread(new Runnable() {@Overridepublic void run() {try {BluetoothServerSocket serverSocket = bluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(bluetoothAdapter.getName(), uuid);while (true) {BluetoothSocket accept = serverSocket.accept();new ServerThread(accept, handler).start();}} catch (IOException e) {e.printStackTrace();}}}).start();}
}package com.example.app_server;import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.os.Handler;
import android.os.Message;
import android.util.Log;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;public class ServerThread extends Thread {private BluetoothSocket socket;private Handler handler;public ServerThread(BluetoothSocket socket, Handler handler) {this.socket = socket;this.handler = handler;}@Overridepublic void run() {try {InputStream is = socket.getInputStream();FileOutputStream fos = new FileOutputStream("/sdcard/DCIM/dan.jpg");byte[] bytes = new byte[1024];int len = 0;Log.d("TAG", "run: 阿斯蒂芬锁定锁定");int count = 0;while ((len = is.read(bytes)) != -1) {count += len;Message obtain = Message.obtain();obtain.what = 101;obtain.obj = count;handler.sendMessage(obtain);Log.d("TAG", "run:12345 " + len);fos.write(bytes, 0, len);}is.close();fos.close();Log.d("TAG", "run: 阿斯蒂芬锁定锁定123");} catch (IOException e) {e.printStackTrace();}}}

更多推荐

lanya2

本文发布于:2024-02-26 17:15:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703283.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!