fork download
  1. package com.example.chengforapp.myapplication;
  2.  
  3. import android.bluetooth.BluetoothAdapter;
  4. import android.bluetooth.BluetoothDevice;
  5. import android.bluetooth.BluetoothSocket;
  6. import android.content.Intent;
  7. import android.content.res.Resources;
  8. import android.graphics.Bitmap;
  9. import android.graphics.BitmapFactory;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.support.v7.app.AppCompatActivity;
  13. import android.util.Log;
  14. import android.view.View;
  15. import android.widget.AdapterView;
  16. import android.widget.ArrayAdapter;
  17. import android.widget.Button;
  18. import android.widget.ImageView;
  19. import android.widget.ListView;
  20. import android.widget.TextView;
  21. import android.widget.Toast;
  22.  
  23.  
  24. import java.io.IOException;
  25. import java.io.InputStream;
  26. import java.io.OutputStream;
  27. import java.text.SimpleDateFormat;
  28. import java.util.Set;
  29. import java.util.UUID;
  30.  
  31. public class MainActivity extends AppCompatActivity {
  32.  
  33.  
  34. private Button button_paired;
  35. private Button button_find;
  36. private TextView show_data;
  37. private ListView event_listView;
  38. private TextView DangerText;
  39. private ImageView image;
  40. private BluetoothAdapter mBluetoothAdapter;
  41. private ArrayAdapter<String> deviceName;
  42. private ArrayAdapter<String> deviceID;
  43. private Set<BluetoothDevice> pairedDevices;
  44. private String choseID;
  45. private BluetoothDevice bleDevice;
  46. private BluetoothSocket bluesoccket; // becareful
  47. private InputStream mmInputStream;
  48. private OutputStream mmOutputStream;//2222222222222
  49. Thread workerThread;
  50. volatile boolean stopWorker;
  51. private int readBufferPosition;
  52. private byte[] readBuffer;
  53. private String uid;
  54. private static final int REQUEST_FINE_LOCATION_PERMISSION = 102;
  55. public int PMvalue = 0;
  56. public Resources res;
  57. public Bitmap a;
  58.  
  59.  
  60. protected void onCreate(Bundle savedInstanceState) {
  61. super.onCreate(savedInstanceState);
  62. setContentView(R.layout.activity_main); //改過
  63. res = getResources();
  64. a = BitmapFactory.decodeResource(res, R.drawable.a000);
  65. getView();
  66. setListener();
  67. deviceName = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1);
  68. deviceID = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1);
  69. DangerText.setText(" ");
  70. image.setImageResource(R.drawable.a000);
  71. }
  72.  
  73. private void getView() {
  74. button_paired = (Button) findViewById(R.id.btn_paired);
  75. show_data = (TextView) findViewById(R.id.txtShow);
  76. event_listView = (ListView) findViewById(R.id.Show_B_List);
  77. button_find = (Button) findViewById(R.id.btn_conn);
  78. DangerText = (TextView) findViewById(R.id.DangerText);
  79. image = (ImageView) findViewById(R.id.pmimage);
  80. }
  81.  
  82. private void setListener() {
  83. button_paired.setOnClickListener(new Button.OnClickListener() {
  84. @Override
  85. public void onClick(View v) {
  86. findPBT();
  87. }
  88. });
  89. button_find.setOnClickListener(new Button.OnClickListener() {
  90. @Override
  91. public void onClick(View v) {
  92. findPBT();
  93. }
  94. });
  95. event_listView.setAdapter(deviceName);
  96. event_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  97. @Override
  98. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  99.  
  100. choseID = deviceID.getItem(position);
  101. try {
  102. openBT();
  103. } catch (IOException e) {
  104. e.printStackTrace();
  105. }
  106. Toast.makeText(MainActivity.this, "選擇了:" + choseID, Toast.LENGTH_SHORT).show();
  107. deviceName.clear();
  108. }
  109. });
  110. }
  111.  
  112. private void findPBT() {
  113. mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  114. if (mBluetoothAdapter != null) {
  115. show_data.setText("No bluetooth adapter available");
  116. }
  117. if (!mBluetoothAdapter.isEnabled()) {
  118. Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
  119. startActivityForResult(enableBluetooth, 1);
  120. }
  121. pairedDevices = mBluetoothAdapter.getBondedDevices();
  122. if (pairedDevices.size() > 0) {
  123. for (BluetoothDevice device : pairedDevices) {
  124. String str = "已配對完成的裝置有" + device.getName() + " " + device.getAddress() + "\n";
  125. uid = device.getAddress();
  126. bleDevice = device;
  127. deviceName.add(str);
  128. deviceID.add(uid);
  129. }
  130. event_listView.setAdapter(deviceName);
  131. }
  132. }
  133.  
  134. private void openBT() throws IOException {
  135. UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
  136. if (bleDevice != null) {
  137. bluesoccket = bleDevice.createRfcommSocketToServiceRecord(uuid);
  138.  
  139. bluesoccket.connect();
  140. mmOutputStream = bluesoccket.getOutputStream();
  141. mmInputStream = bluesoccket.getInputStream();
  142. beginListenForData();
  143. show_data.setText("Bluetooth Opened:"+bleDevice.getName()+""+bleDevice.getAddress());//此行有可能要刪除
  144. View b1 = findViewById(R.id.btn_conn);
  145. View b2 = findViewById(R.id.btn_paired);
  146. View b3 = findViewById(R.id.Show_B_List);
  147.  
  148. b1.setVisibility(View.INVISIBLE);
  149. b2.setVisibility(View.INVISIBLE);
  150. b3.setVisibility(View.INVISIBLE);
  151. }
  152. }
  153.  
  154. private void beginListenForData() {
  155. final Handler handler = new Handler();
  156. final byte delimiter = 10;
  157.  
  158. stopWorker = false;
  159. readBufferPosition = 0;
  160. readBuffer = new byte[1024];
  161. workerThread = new Thread(new Runnable() {
  162. @Override
  163.  
  164. public void run() {
  165. while (!Thread.currentThread().isInterrupted() && !stopWorker) {
  166. try {
  167. int bytesAvailable = mmInputStream.available();
  168. if (bytesAvailable > 0) {
  169. byte[] packetBytes = new byte[bytesAvailable];
  170. mmInputStream.read(packetBytes);
  171. for (int i = 0; i < bytesAvailable; i++) {
  172. byte b = packetBytes[i];
  173. readBufferPosition++;
  174. if (b == delimiter) {
  175. byte[] encodedBytes = new byte[readBufferPosition];
  176. System.arraycopy(readBuffer,i-readBufferPosition,encodedBytes,0,encodedBytes.length);
  177. final String data = new String(encodedBytes);
  178. PMvalue = 0;
  179. for (int j = 0; j < encodedBytes.length - 1; j++) {
  180. PMvalue = PMvalue * 10 + encodedBytes[j] - 48;
  181. }
  182.  
  183. String tmp1 = String.valueOf(PMvalue);
  184. Log.d("value", tmp1);
  185. readBufferPosition = 0;
  186. handler.post(new Runnable() {
  187. @Override
  188. public void run() {
  189. long date = System.currentTimeMillis();
  190. TextView tvDisplayDate = (TextView) findViewById(R.id.DATE);
  191. SimpleDateFormat sdf = new SimpleDateFormat("MMM MM dd, yyyy h:mm a");
  192. String dateString = sdf.format(date);
  193. tvDisplayDate.setText("Update Time: " + dateString);
  194. if (PMvalue < 36) {
  195. if (PMvalue > 23)
  196. a = BitmapFactory.decodeResource(res, R.drawable.a03);
  197. else if (PMvalue > 11)
  198. a = BitmapFactory.decodeResource(res, R.drawable.a02);
  199. else if (PMvalue > 0)
  200. a = BitmapFactory.decodeResource(res, R.drawable.a01);
  201. image.setImageBitmap(a);
  202. DangerText.setText("良好");
  203. show_data.setText(data);
  204. } else if (PMvalue < 54) {
  205. if (PMvalue > 47)
  206. a = BitmapFactory.decodeResource(res, R.drawable.a04);
  207. else if (PMvalue > 41)
  208. a = BitmapFactory.decodeResource(res, R.drawable.a05);
  209. else if (PMvalue > 35)
  210. a = BitmapFactory.decodeResource(res, R.drawable.a06);
  211. image.setImageBitmap(a);
  212. DangerText.setText("警戒");
  213. show_data.setText(data);
  214. } else if (PMvalue < 71) {
  215. if (PMvalue > 64)
  216. a = BitmapFactory.decodeResource(res, R.drawable.a09);
  217. else if (PMvalue > 58)
  218. a = BitmapFactory.decodeResource(res, R.drawable.a08);
  219. else if (PMvalue > 53)
  220. a = BitmapFactory.decodeResource(res, R.drawable.a07);
  221. image.setImageBitmap(a);
  222. DangerText.setText("過量");
  223. show_data.setText(data);
  224. } else if (PMvalue > 70) {
  225. a = BitmapFactory.decodeResource(res, R.drawable.a10);
  226. image.setImageBitmap(a);
  227. DangerText.setText("危險");
  228. show_data.setText(data);
  229. }
  230. } //沒
  231. });
  232. //有
  233. } else {
  234. readBuffer[readBufferPosition++] = b;
  235. }
  236. }
  237. }
  238. } catch (IOException ex) {
  239. stopWorker = true;
  240. }
  241. }
  242. }
  243. });
  244. workerThread.start();
  245.  
  246.  
  247. }
  248. }
  249.  
Success #stdin #stdout 0.08s 27628KB
stdin
Standard input is empty
stdout
Standard output is empty