package com.example.chengforapp.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
public class Trans_page extends AppCompatActivity{
private Button button_paired
; private Button button_disconnect
; private TextView show_data ;
private TextView show_count ;
private BluetoothAdapter mBluetoothAdapter ;
private ArrayAdapter<String> deviceName ;
private ArrayAdapter<String> deviceID ;
private Set<BluetoothDevice> pairedDevices ;
private BluetoothDevice bleDevice ;
private BluetoothSocket bluesoccket ; // becareful
volatile boolean stopWorker ;
private int readBufferPosition ;
private byte[] readBuffer ;
private int count ;
private LocationManager locMgr ;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trans_page);
getView();
setListener();
deviceName = new ArrayAdaapter<String>(this.android.R.layout.simple_expandable_list_item_1);
deviceID = new ArrayAdapter<String>(this.android.R.layout.simple_expandable_list_item_1);
count = 0;
}
private void getView(){
button_paired
= (Button)findViewById
(R.
id.
btn_paired); button_disconnect
=(Button)findViewById
(R.
id.
btn_disconn); show_data = (TextView)findViewById(R.id.txtShow);
event_listView
=(ListView)findViewById
(R.
id.
Show_B_List); button_find
= (Button)findViewById
(R.
id.
btn_conn); show_count = (TextView)findViewById(R.id.txt_count);
}
private void setListener(){
button_paired.
setOnClickListener(new Button.
OnClickListener(){ @Override
public void onClick
(View v
){ findPBT();
}
}) ;
button_disconnect.setOnClickListener((v)->{
try{
closeBT();
e.printStackTrace();}
});
button_find.
setOnClickListener(new Button.
OnClickListener(){ @Override
public void onClick
(View v
){ findPBT();
}
});
event_listView.setAdapter(deviceName);
event_listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void inItemClick
(AdapterView
<?> parent,
View view ,
int position,
long id
){ choseID=deviceID.getItem(position);
try{
openBT();
e.printStackTrace();
}
Toast.makeText(Trans_page.this,"選擇了:"+choseID, Toast.LENGTH_SHORT).show();
deviceName.clear();
}
});
}
private void findPBT(){
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter != null){
show_data.setText("No bluetooth adapter available");
}
if(!mBluetoothAdapter.isEnabled()){
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth,1);
}
pairedDevices=mBluetoothAdapter.getBondedDevices();
if(pairedDevices.size()>0){
for(BluetoothDevice device : pairedDevices){
Stirng str ="已配對完成的裝置有"+device.getName()+" "+device.getAddress()+"\n";
uid = device.getAddress();
bleDevice = device ;
}
event_listView.setAdapter(deviceName);
}
}
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
if(bleDevice != null){
bluesoccket = bleDevice.createRfcommSocketToServiceRecord(uuid);
bluesoccket.connect();
mmOutputStream = bluesoccket.getOutputStream();
mmInputStream = bluesoccket.getInputStream();
beginListenForData();
show_data.setText("Bluetooth Opened:"+bleDevice.getName()+""+bleDevice.getAddress());
}
}
private void beginListenForData(){
final Handler handler = new Handler();
final byte delimiter = 10 ;
stopWorker = false ;
readBufferPosition = 0 ;
readBuffer = new byte[1024];
while(!Thread.
currentThread().
isInterrupted()&&!stopWorker
) {
try{
int bytesAvailable = mmInputStream.available();
if(bytesAvailable>0)
{
byte[] packetBytes = new byte[bytesAvailable];
mmInputStream.read(packetBytes);
for(int i = 0;i<bytesAvailable ; i++){
byte b = packetBytes[i];
if(b==delimiter){
byte[] encodedBytes = new byte[readBufferPosition];
System.
arraycopy(readBuffer,
0,encodedBytes,
0,encodedBytes.
length); readBufferPosition = 0;
count++;
handler.post(()->{
String prevString
= show_data.
getText().
toString(); String dataText
= String.
format("%s\nCF=1,PM2.5=%sug/m3,收到了第%s筆資料",prevString,data,count
); show_data.setText(dataText);
});
}else
{
readBuffer[readBufferPosition++]=b;
}
}
}
stopWorker = true ;
}
}
});
}
stopWorker = true ;
mmOutputStream.close();
mmInputStream.close();
bluesoccket.clsoe();
deviceName.clear();
show_count.setText("");
show_data.setText("Bluetooth Closed");
}
}