protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blue__rssi);
ToggleButton T_btn;
T_btn = (ToggleButton) findViewById(R.id.Rssi_Button);
T_btn.setOnCheckedChangeListener(RSSI_Listener);
T_btn.setChecked(true);
mTask = new TimerTask() { //총 5초에 거치는 타이머마스크를 시행
@Override
public void run() {
if(!connection_state) { //첫번째 시작은 블루투스 장치 디바이스를 찾는 명령이다.
registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
BTAdapter = BluetoothAdapter.getDefaultAdapter();
BTAdapter.startDiscovery(); //이 명령을 통해 BroadcastReceiver의 onReceive반환값을 받을 수있다.
//mTimer.schedule(mTask,0,5500);
/*activity_restart++; //데이터클린을 위해 재시작함수를 썻으나 Fail
if(activity_restart == 5) {
Intent intent = getIntent();
finish();
startActivity(intent);
}*/
}
else { //데이터 전송 및 블루투스 연결을 해제하는 소스
String str = new String();
str = "[" + String.valueOf(Math.abs(Bluetooth_Rssi_data)) + "]";
//EditText textField = (EditText) findViewById(R.id.editText4); //두번째줄에는 블루투로 전송하는 데이터값을 표시
//textField.setText(str);
sendData(str);
try { //블루투스 연결 해제소스(현재 이 명령에서 문제가 있는것으로 보인다)
mOutputStream.close();
mInputStream.close();
mSocket.close();
} catch (IOException e) {}
mOutputStream = null;
mInputStream = null;
mSocket = null;
unregisterReceiver(receiver);
connection_state = false;
//mTimer.schedule(mTask,0,1500);
}
}
};
mTimer = new Timer();
mTimer.schedule(mTask, 0, 2500);
}
안녕하세요 현재 저는 안드로이드 블루투스를 이용하여 블루투스 모듈이 장착된 디바이스의 제어 어플리케이션을 제작중에 있습니다.
어플리케이션에서 반복적으로 블루투스 모듈 디바이스를 스캔한 뒤 디바이스를 연결 후 해당 블루투스 모듈에 데이터를 전송하고 연결을 끊은 뒤
다시 디바이스 모듈을 스캔하고 있는데요
이러한 일련의 과정을 TimerTask를 이용해 구현하고 있습니다.
정확하게는 TimerTask에서 이벤트가 발생할때마다 전역변수값을 변경 후 변경된 전역변수에 따라서
if문으로
전역변수가 false일때는 블루투스 모듈을 스캔하고 연결하는 작업만 수행하고
전역변수가 true일때는 블루투스 모듈에 데이터를 전송하고 전송 후 블루투스 모듈과의 소켓을 끊는 작업을 수행하는데요
이 작업이 전부 2.5초동안 수행합니다.
하지만 저는 첫번째 작업은 5초동안 작업하고 두번째 작업을 1초동안 수행하게 변경하고 싶은데요
이것에 대한 방법을 알 수가 없어 이렇게 질문을 남깁니다.
첨부된 소스를 보시면 아시겠지만
mTimer.schedule(mTask, 0, 2500); 이 구문으로 2.5초마다 Timer Task 이벤트가 2.5초마다 발생하는데
이것을 5초, 1초 5초, 1초 이렇게 발생시키고 싶습니다.
타이머태스크 문은 onCreate에서 발생합니다.