package com.androday.test;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btnStopService;
Button btnSaveService;
Intent intentMyService;
BroadcastReceiver receiver;
boolean flag = true;
Toast toast;// 시작 메세지 Toast
TextView CountText;
String serviceData;
MYDBOpenHelper mydb;
SQLiteDatabase mdb;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intentMyService = new Intent(this, MyServiceIntent.class);
// 실행되기 원하는 서비스 등록
receiver = new MyMainLocalRecever();
CountText = (TextView) findViewById(R.id.countText);
btnStopService = (Button) findViewById(R.id.btnStopService);
// 서비스 중지
btnStopService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (flag) {
//위 선언된 버튼의 text를 stop으로 바꿈
btnStopService.setText("멈춤 !!");
// TODO Auto-generated method stub
try {//함수들 호출
IntentFilter mainFilter = new IntentFilter(
"com.androday.test.step");
registerReceiver(receiver, mainFilter);
startService(intentMyService);
// txtMsg.setText("After stoping Service:\n"+service.getClassName());
Toast.makeText(getApplicationContext(), "카운트를 시작합니다", 1)
.show();
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), e.getMessage(),
1).show();
}
}
else {
btnStopService.setText("시작 !!");
// TODO Auto-generated method stub
try {
unregisterReceiver(receiver);
stopService(intentMyService);
Toast.makeText(getApplicationContext(), "서비스 중지", 1)
.show();
// txtMsg.setText("After stoping Service:\n"+service.getClassName());
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), e.getMessage(),
1).show();
}
}
flag = !flag;
}
});
btnSaveService = (Button) findViewById(R.id.btnSaveService);
btnSaveService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mydb = new MYDBOpenHelper(MainActivity.this);
mdb = mydb.getWritableDatabase();
mdb.execSQL("insert into score values(null, null," + serviceData
+ ")");
startActivity(new Intent(MainActivity.this, ScoreActivity.class));
}
});
class MyMainLocalRecever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
serviceData = intent.getStringExtra("serviceData");
CountText.setText(serviceData);
Toast.makeText(getApplicationContext(), "Walking . . . ", 1).show();
}
}
}
만보기 어플 구현하려고 합니다. btnSaveService 버튼 누르면 카운트를 저장하려고 하는데요
btnSaveService = (Button) findViewById(R.id.btnSaveService);
btnSaveService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mydb = new MYDBOpenHelper(MainActivity.this);
mdb = mydb.getWritableDatabase();
mdb.execSQL("insert into score values(null, null," + serviceData
+ ")");
startActivity(new Intent(MainActivity.this, ScoreActivity.class));
}
});
에러가 자꾸 납니다.!!!!!!
[2014-02-10 14:23:42 - ddms] Can't bind to local 8600 for debugger
[2014-02-10 14:23:42 - ddmlib] 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
java.io.IOException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
at com.android.ddmlib.Client.sendAndConsume(Client.java:642)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:488)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:835)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:803)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:763)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652)
at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)
생성은
db.execSQL("CREATE TABLE score(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score TEXT);");
다른 액티비티는 이겁니다.
public class ScoreActivity extends Activity {
private MYDBOpenHelper mydb;
private SQLiteDatabase mdb;
private Cursor cursor;
private ListView lv;
private SimpleCursorAdapter ca;
private String strCol[] = { "name", "score" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
setContentView(R.layout.scorelist);
mydb = new MYDBOpenHelper(ScoreActivity.this);
mdb = mydb.getWritableDatabase();
cursor = mdb.rawQuery("select * from score order by score desc", null);
lv = (ListView) findViewById(R.id.score_list);
ca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2,
cursor, strCol, new int[] { android.R.id.text1,
android.R.id.text2 });
lv.setAdapter(ca);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
}
}