>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Problema em finalizar uma Classe Service.


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();
}



4 Respostas


Opa

Jean, qual o erro que ele ta gerando?






Rafael não está dando erro, apenas o serviço continua funcionando.




Jean

Mas você encerrou ele?

Ele precisa ser encerrado em algum momento.