현재 Arduino를 사용하여 공기 품질 모니터링 장치의 프로토 타입을 개발 중입니다. 이 장치는 HC-05 블루투스 모듈을 통해 데이터를 내 안드로이드 앱에 전송할 3 개의 가스 센서와 통합되어 있습니다. 실시간으로 값을 받고 화면에 표시하고 동시에 SQL 데이터베이스에 저장할 수 있습니다.ToggleButton을 사용하여 android에서 스레드를 시작하고 중지하는 방법은 무엇입니까?
내게 발생한 문제는 데이터를 캡처하기 위해 토글 단추를 구현할 때 문제가 발생하므로 사용자가 원하는 경우에만 데이터를 데이터베이스에 저장할 수 있습니다. 이를 달성하기 위해서는 5 초마다 데이터를 저장하고 토글 버튼을 사용하여 스레드를 시작하고 중지 할 계획 인 스레드를 사용해야합니다. 하지만 내 코드가 제대로 작동하지 않습니다. 토글 버튼을 누를 때마다 데이터가 데이터베이스에 저장되기 시작합니다. 토글 버튼을 중지하면 작동하지 않습니다. 스레드는 토글 버튼을 이미 끄더라도 계속 실행됩니다.
저는 JAVA 및 Android 프로그래밍에있어 매우 새롭습니다. 제발 도와주세요.
여기 내 코드. (토글 버튼과 나사 부분)
logdata.setChecked(false);
logdata.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Is the ToggleButton on?
boolean on = ((ToggleButton) view).isChecked();
Thread capture = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(5000);
runOnUiThread(new Runnable() {
@Override
public void run() {
MyLocationListener callgpsclass = new MyLocationListener();
long date = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy/hh:mm:ss a");
String dateString = sdf.format(date);
String capdata_gps = (String) callgpsclass.showGPS.getText();
String capdata_mq135 = (String) showMq135.getText();
String capdata_mq9 = (String) showMq9.getText();
String capdata_dust = (String) showDust.getText();
String capdata_air_quality = (String) showAirQuality.getText();
// Insert a row
dbhlpr.insertReading(
dateString,
capdata_gps,
capdata_mq135,
capdata_mq9,
capdata_dust,
capdata_air_quality
);
}
});
}
} catch (InterruptedException e) {
}
}
};
if (on) {
capture.start();
Toast.makeText(getApplicationContext(), "Data capture started", Toast.LENGTH_SHORT).show();
}
else{
capture.interrupt();
Toast.makeText(getApplicationContext(), "Data capture stopped", Toast.LENGTH_SHORT).show();
}
}
});
죄송합니다. 코드를 요청할 수 없습니다. 어느 부분을 할 수 없습니까? Google에서 해당 부분을 수행하는 방법을 검색 하시겠습니까? 하나씩 배우십시오. –