Boa noite, pessoal estou desenvolvendo um App Android que pega ( Latitude, longitude e Imei ) a cada 5 minutos e envia ao banco. até ai tudo certo, o service executa bem certinho quando o app está com a tela habilitada ou no caso está sendo utilizado, queria que o App mesmo com a tela bloqueada realize o serviço. foi criado um service, broadcastReceive.
public class service extends Service {
int mStartMode; // indicates how to behave if the service is killed
IBinder mBinder; // interface for clients that bind
boolean mAllowRebind; // indicates whether onRebind should be used
private Handler mHandler = new Handler();
// Creating Volley RequestQueue.
RequestQueue requestQueue;
// Create string variable to hold the EditText Value.
String ImeiHolder, LatitudeHolder,LongitudeHolder, tmpLat, tmpLon,tmpImei;
// ENDEREÇO DO SERVIDOR E PAGINA RESPONSAVEL POR RECEBER DADOS DO APP E INSERIR NO BANCO
String HttpUrl = "http://xxxxxxxx/inserir.php";
/** Called when the activity is first created. */
@TargetApi(Build.VERSION_CODES.O)
@Override
public void onCreate() {
super.onCreate();
Context context = getApplicationContext();
//NOTIFICAÇÃO PARA O USUARIO
String CHANNEL_ID = "my_channel_01";
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.app_name);
// String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
//channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
PendingIntent p = PendingIntent.getActivity(this, 1, new Intent(this, service.class), 0);
notificationManager.createNotificationChannel(channel);
}else {
NotificationCompat.Builder builder = new NotificationCompat.Builder(service.this, CHANNEL_ID)
.setSmallIcon(R.drawable.logo_busk)
.setContentTitle("Notificação")
.setContentText("Bem vindo")
.setPriority(NotificationCompat.PRIORITY_HIGH);
}
Log.d("TAG", "Serviço Criado, Notificação enviada");
Toast.makeText(service.this, "Proteção Criada", Toast.LENGTH_SHORT).show();
// Creating Volley newRequestQueue .
requestQueue = Volley.newRequestQueue(service.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("TAG", "Comando Service inciado no OnStartComannd.");
Toast.makeText(service.this, "Proteção Incializada", Toast.LENGTH_SHORT).show();
Imei();
EnviarLocalizacao.run();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String CHANNEL_ID = "my_channel_01";
Notification.Builder builder = new Notification.Builder(service.this,CHANNEL_ID)
.setContentTitle(getString(R.string.app_name))
.setContentText("Notificação")
.setAutoCancel(true);
// Adding the StringRequest object into requestQueue.
requestQueue.add(stringRequest);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.d("TAG", "Serviço inciado no onStart.");
configurarServico();
}
//localização
@Override
public IBinder onBind(Intent arg0) {
Como podem ver a google não aceita mais a SDK da unity ads por motivos da empresa
Então resolvi remover toda a SDK do meu código. Libs,linhas de comando, tudo. e mesmo assim ainda ela acusa que tenho a sdk dentro do meu app
Já tenho mais ou menos 1 ano programando em android e nunca tinha visto algo sobre ou esse erro persistir já que tirei tudo de dentro do app
A minha dúvida é, onde estou errando? Onde deixei alguma coisa sobre essa sdk?Que inclusive coloquei pra teste a uns 5 meses atrás e até tinha esquecido dela kk
Peço que me ajudem dando sugestões de como remover por completo pois eu praticamente reverti o processo de adicionar a SDK e todo tipo de linha relacionada a unity.ads
Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription("Alguma descrição");
request.setTitle("Algum titulo");
//A notificação de conslusão só esta disponível a partir da API 11
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
//Salvando o arquivo no diretório de Downloads
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf");
DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
manager.enqueue(request);
Bom dia, alguém poderia me ajudar com esse problema?
Estou fazendo um aplicativo bem simples em que sua única função será criar uma pasta no celular (em local acessível pelo gerenciador de arquivos do usuário), e posteriormente copiar arquivos de outro local ou rede e colocar nesta pasta.
Fiz algumas pesquisas, mas por incrível que pareça não encontrei algo que tenha funcionando. Também tenho dúvidas sobre qual seria o equivalente ao "C:/" do Android.
Vou iniciar uma projeto para a empresa onde eu trabalho, eu não sou desenvolvedor, porém tenho noção e sou formado na área. Abaixo vou explicar o modelo do projeto:
O projeto consiste em um aplicativo para controle de roteirização da frota;
Cada motorista terá acesso ao app pelo celular com login e senha;
O encarregado pelo logística terá que ter acesso pelo PC (WEB) onde ele irá direcionar os roteiros para cada motorista, nessa plataforma web ele irá enviar as coletas e entregas que cada motorista terá que fazer.
Basicamente o projeto é esse, preciso de norte para saber o que tenho que estudar para desenvolver esse projeto, qual framework estudar, qual liguagem, etc.
Preciso desenvolver um app com os parâmetros descritos na tabela e estou com dificuldade de pensar uma forma de fazer isso, pensei em vários "If's" para classificar o conforto térmico, mas como existem resultados que se repetem em mais de uma classificação acabei descartando esse caminho.
Se possível me deem dicas de como os senhores procederiam =D
Boa noite, pessoal estou desenvolvendo um App Android que pega ( Latitude, longitude e Imei ) a cada 5 minutos e envia ao banco. até ai tudo certo, o service executa bem certinho quando o app está com a tela habilitada ou no caso está sendo utilizado, queria que o App mesmo com a tela bloqueada realize o serviço. foi criado um service, broadcastReceive.
Segue service
package com.example.junior.buskrastreamentogps;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class service extends Service {
int mStartMode; // indicates how to behave if the service is killed
IBinder mBinder; // interface for clients that bind
boolean mAllowRebind; // indicates whether onRebind should be used
private Handler mHandler = new Handler();
// Creating Volley RequestQueue.
RequestQueue requestQueue;
// Create string variable to hold the EditText Value.
String ImeiHolder, LatitudeHolder,LongitudeHolder, tmpLat, tmpLon,tmpImei;
// ENDEREÇO DO SERVIDOR E PAGINA RESPONSAVEL POR RECEBER DADOS DO APP E INSERIR NO BANCO
String HttpUrl = "http://xxxxxxxx/inserir.php";
/** Called when the activity is first created. */
@TargetApi(Build.VERSION_CODES.O)
@Override
public void onCreate() {
super.onCreate();
Context context = getApplicationContext();
//NOTIFICAÇÃO PARA O USUARIO
String CHANNEL_ID = "my_channel_01";
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.app_name);
// String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
//channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
PendingIntent p = PendingIntent.getActivity(this, 1, new Intent(this, service.class), 0);
notificationManager.createNotificationChannel(channel);
}else {
NotificationCompat.Builder builder = new NotificationCompat.Builder(service.this, CHANNEL_ID)
.setSmallIcon(R.drawable.logo_busk)
.setContentTitle("Notificação")
.setContentText("Bem vindo")
.setPriority(NotificationCompat.PRIORITY_HIGH);
}
Log.d("TAG", "Serviço Criado, Notificação enviada");
Toast.makeText(service.this, "Proteção Criada", Toast.LENGTH_SHORT).show();
// Creating Volley newRequestQueue .
requestQueue = Volley.newRequestQueue(service.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("TAG", "Comando Service inciado no OnStartComannd.");
Toast.makeText(service.this, "Proteção Incializada", Toast.LENGTH_SHORT).show();
Imei();
EnviarLocalizacao.run();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String CHANNEL_ID = "my_channel_01";
Notification.Builder builder = new Notification.Builder(service.this,CHANNEL_ID)
.setContentTitle(getString(R.string.app_name))
.setContentText("Notificação")
.setAutoCancel(true);
Notification notification = builder.build();
startForeground(1, notification);
} else {
NotificationCompat.Builder builder = new NotificationCompat.Builder(service.this)
.setContentTitle(getString(R.string.app_name))
.setContentText("Notificação")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
Notification notification = builder.build();
startForeground(1, notification);
}
return mStartMode;
}
private Runnable EnviarLocalizacao = new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void run() {
configurarServico();
//Toast.makeText(MainActivity.this, "This is a delayed toast", Toast.LENGTH_SHORT).show();
mHandler.postDelayed(this, 180000);
}
};
private void Imei() {
final TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
{
return;
}
@SuppressLint("HardwareIds") final String imei = telephonyManager.getDeviceId();
tmpImei = imei.toString();
ImeiHolder = tmpImei.trim();
}
public void configurarServico() {
try {
final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
double latPoint = location.getLatitude();
double lngPoint = location.getLongitude();
tmpLat = Double.toString(latPoint);
tmpLon = Double.toString(lngPoint);
LatitudeHolder = tmpLat.trim();
LongitudeHolder = tmpLon.trim();
insert_banco();
Imei();
Toast.makeText(service.this, "Proteção Sincronizada!", Toast.LENGTH_SHORT).show();
locationManager.removeUpdates(this);
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) { }
public void onProviderDisabled(String provider) { }
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, locationListener);
}catch(SecurityException ex){
//Toast.makeText(service.this, "Você precisa ativar a permissão do GPS", Toast.LENGTH_LONG).show();
}
}
public void insert_banco()
{
// Creating string request with post method.
StringRequest stringRequest = new StringRequest(Request.Method.POST, HttpUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String ServerResponse) {
// Showing response message coming from server.
//Toast.makeText(service.this, ServerResponse, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
// Showing error message if something goes wrong.
//Toast.makeText(service.this, volleyError.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
// Creating Map String Params.
Map<String, String> params = new HashMap<String, String>();
// Adding All values to Params.
params.put("imei", ImeiHolder);
params.put("lat", LatitudeHolder);
params.put("lng", LongitudeHolder);
return params;
}
};
// Creating RequestQueue.
RequestQueue requestQueue = Volley.newRequestQueue(service.this);
// Adding the StringRequest object into requestQueue.
requestQueue.add(stringRequest);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.d("TAG", "Serviço inciado no onStart.");
configurarServico();
}
//localização
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
}
Compartilhar este post
Link para o post
Compartilhar em outros sites