>
Rafael bom dia,
Como relatei por e-mail, estou com dificuldade de finalizar um serviço que foi por mim criado. Anexo eu estou colocando as configurações do xml, a classe e de como eu estou chamando de uma classe Activity.
[XML]
[/XML]
package br.com.jsferreira.findson;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Service;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.location.LocationManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class LocalizarPosicaoService extends Service implements Runnable {
static final String TAG = "GPS_SIMPLE_SAMPLE";
// The vital part, it allows access to location and GPS status services
private LocationManager lm;
private String s = "";
String fone;
private SQLiteDatabase db;
private TelephonyManager tm = null;
public void onCreate() {
// tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
fone = tm.getLine1Number();
Log.d("1-LocalizarPosicaoService:",
String.valueOf(new Date().toString()));
db = openOrCreateDatabase("Coordenadas.db", Context.MODE_PRIVATE, null);
StringBuilder sqlmonitor = new StringBuilder();
sqlmonitor.append("CREATE TABLE IF NOT EXISTS Coordenadas (");
sqlmonitor.append("_id INTEGER PRIMARY KEY, ");
sqlmonitor.append("celular VARCHAR(8),");
sqlmonitor.append("la VARCHAR(50),");
sqlmonitor.append("lo VARCHAR(50),");
sqlmonitor.append("myDate VARCHAR(25));");
db.execSQL(sqlmonitor.toString());
// db.close();
new Thread(LocalizarPosicaoService.this).start();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void run() {
Looper.prepare();
final Looper looper = Looper.myLooper();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
for (;;) {
Location location = lm
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
onLocation(location);
Thread.sleep(100);
}
} catch (Exception ex) {
Log.d(TAG, "1-insertLocalizacao-ERRO:" + ex.getMessage());
} finally {
looper.quit();
}
}
}, 100);
Looper.loop();
}
public void onLocation(Location location) {
Log.d(TAG, "Simple_GPS_ExampleActivity::onLocationChanged");
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
String date = new SimpleDateFormat("dd/MM/yyyy HH:MM:SS")
.format(timestamp.getTime());
insertLocalizacao(fone, new Double(latitude).toString(), new Double(
longitude).toString(), date.toString());
}
private void insertLocalizacao(String celular, String la, String lo,
String myDate) {
try {
Log.d(TAG, "Metodo - insertLocalizacao");
db = openOrCreateDatabase("Coordenadas.db", Context.MODE_PRIVATE,
null);
// Toast.makeText(getBaseContext(), "B", Toast.LENGTH_SHORT).show();
ContentValues ctv = new ContentValues();
Log.d(TAG, "Fone:" + "30945094");
Log.d(TAG, "Date:" + myDate);
ctv.put("celular", "30945094");
// Toast.makeText(getBaseContext(), "D", Toast.LENGTH_SHORT).show();
ctv.put("la", la);
// Toast.makeText(getBaseContext(), "E", Toast.LENGTH_SHORT).show();
ctv.put("lo", lo);
// Toast.makeText(getBaseContext(), "F", Toast.LENGTH_SHORT).show();
ctv.put("myDate", myDate);
// Toast.makeText(getBaseContext(), "G", Toast.LENGTH_SHORT).show();
if (db.insert("Coordenadas", "_id", ctv) > 0) {
Log.d(TAG, "Sucesso em inserir localização!");
// Toast.makeText(getBaseContext(),"Sucesso em inserir localização!",
// Toast.LENGTH_SHORT).show();
} else {
Log.d(TAG, "Erro em inserir o localização!");
// Toast.makeText(getBaseContext(),"Erro em inserir o localização!",
// Toast.LENGTH_SHORT).show();
}
db.close();
// Toast.makeText(getBaseContext(), "G", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.d(TAG, "insertLocalizacao-ERRO:" + e.getMessage());
// Toast.makeText(getBaseContext(),
// "Sucesso em inserir localização!", Toast.LENGTH_SHORT).show();
}
}
}
public void onClickFinalizarLocalizacao(View v) {
Builder msg = new Builder(MainActivity.this);
msg.setMessage("Deseja finalizar o Rastreamento?");
msg.setNegativeButton("Não", null);
msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "onClickFinalizarLocalizacao", Toast.LENGTH_SHORT).show();
Button iniciar = (Button) findViewById(R.id.bttSalvar);
Button finalizar = (Button) findViewById(R.id.bttFinalizar);
iniciar.setEnabled(true);
finalizar.setEnabled(false);
//Mudar cor texto
//Color.GRAY
iniciar.setTextColor(Color.parseColor("BLACK")); // set button text colour to be blue
finalizar.setTextColor(Color.parseColor("GRAY")); // set button text colour to be blue
//Mudar cor fundo
//iniciar.setBackgroundColor(Color.parseColor("black"));
//finalizar.setBackgroundColor(Color.parseColor("black"));
iniciar.refreshDrawableState();
finalizar.refreshDrawableState();
Intent it = new Intent(getBaseContext(),LocalizarPosicaoService.class);
Toast.makeText(getBaseContext(), "Serviço finalizado!", Toast.LENGTH_SHORT).show();
stopService(it);
}
});
msg.show();
}
Opa
Jean, qual o erro que ele ta gerando?
SEU CODIGO AQUI
Rafael não está dando erro, apenas o serviço continua funcionando.
Jean
Mas você encerrou ele?
Ele precisa ser encerrado em algum momento.