文章的思路就是在主線程中設定一個按鈕,啟動一個線程,在子線程中進行線程的耗時操作,最後需要記住添加藍牙權限
AndroidManifest.xml中加入
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
package com.example.testcamera;
import java.io.IOException;
import android.R.anim;
import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.content.res.Configuration;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button startButton;
TextView textView;
Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
textView.setText(" "+msg.arg1);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startButton=(Button) findViewById(R.id.startButton);
textView=(TextView) findViewById(R.id.tv);
startButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MyThread myThread=new MyThread();
myThread.start();
}
});
}
class MyThread extends Thread {
@Override
public void run() {
// 耗時操作
int num=0;
while(true){
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
mBluetoothAdapter.disable();//關閉藍牙
String string1=mBluetoothAdapter.getAddress();
Log.e("test", "關閉"+mBluetoothAdapter.getState());
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mBluetoothAdapter.enable();
String string=mBluetoothAdapter.getAddress();
Message msg = new Message();
num++;
msg.arg1=num;
Log.e("bluetest", "開啟"+mBluetoothAdapter.getState());
Log.e("bluetest", string);
Log.e("bluetest","總的次數"+num);
handle.sendMessage(msg);
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
}
}
這裡我在主界面更新開關的次數,也将開關的狀态的傳回值,打開的傳回值,藍牙的mac位址,和開關的次數輸出到了log之中。
這裡,謝謝我同僚b.z對我的提醒