Son Forum Aktiviteleri
84Javascript ile website parse işlemi
Merhaba arkadaşlar Js ye daha yeni başlamış biri olarak ufak bir sorum var. Bir websitesini sanki bir webviewde açılmış gibi açarak komut girmek gibi bir şey yapılabilir mi ?
Volley Kütüphanesi ile çoklu veri indirme
Merhaba aslında sorunum basit ancak çözümü internnette bulumadığımı daha doğrusu ne diye araştırmalıyım emin olamadığım için sormak gereksinimi duyuyorum.
Soruma gelirsek internet üzerinden hali hazırda ayarladığım ses dosyalarını çoklu bir şekilde indirme yapmam gerekiyor ancak volley kullanırken asekron yapıda çalıştığı için for içinde sorun oluştuğunu fark ettim bende bir Thread.sleep(200) koyarak işi biraz yavaşlattım. Çalışmaya çalıştı ancak doğru olmadığını ve doğrusunu öğrenmek adına daha iyi nasıl yaparım sormak istedim.
İşte kodlarım:
package com.vaktinde.app.net;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import java.util.HashMap;
import java.util.Map;
public class InputStreamVolleyRequest extends Request<byte[]> {
private final Response.Listener<byte[]> mListener;
private Map<String, String> mParams;
//create a static map for directly accessing headers
public Map<String, String> responseHeaders;
public InputStreamVolleyRequest(int method, String mUrl, Response.Listener<byte[]> listener,
Response.ErrorListener errorListener, HashMap<String, String> params) {
// TODO Auto-generated constructor stub
super(method, mUrl, errorListener);
// this request would never use cache.
setShouldCache(false);
mListener = listener;
mParams = params;
}
@Override
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return mParams;
}
@Override
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {
//Initialise local responseHeaders map with response headers received
responseHeaders = response.headers;
//Pass the response data here
return Response.success(response.data, HttpHeaderParser.parseCacheHeaders(response));
}
@Override
protected void deliverResponse(byte[] response) {
mListener.onResponse(response);
}
}
Bu özelleştirilmiş Volley request classım
class GetDowlandFile2 extends AsyncTask<String, Integer, String> {
private ProgressDialog progressDialog;
private KuranSound kuranSound;
private List<KuranAyet> kuranAyetList;
private NotificationManager mNotifyManager;
private NotificationCompat.Builder mBuilder;
private String channelId = "DowlandFile";
private InputStream input;
private BufferedOutputStream output;
public GetDowlandFile2(KuranSound kuranSound, List<KuranAyet> kuranAyetList) {
this.kuranSound = kuranSound;
this.kuranAyetList = kuranAyetList;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(view.getContext());
progressDialog.setMax(kuranAyetList.size());
progressDialog.setTitle(getSTR(R.string.app_name));
progressDialog.setMessage(getSTR(R.string.progress_dialog2));
progressDialog.setProgress(0);
progressDialog.setCancelable(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show();
mNotifyManager = (NotificationManager) view.getContext().getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(view.getContext(), channelId);
mBuilder.setContentTitle(getSTR(R.string.app_name))
.setContentText(getSTR(R.string.progress_dialog2))
.setSmallIcon(R.drawable.ic_stat_vaktinde);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId, "Dosya İndirme", NotificationManager.IMPORTANCE_LOW);
mNotifyManager.createNotificationChannel(channel);
}
}
@Override
protected String doInBackground(String... f_url) {
try {
File f = new File(view.getContext().getExternalCacheDir(), "KuranSound/" + kuranSound.getLink());
//Eğer dosya yoksa oluştur
if (!f.exists()) {
f.mkdirs();
}
for (int i = 0; i < kuranAyetList.size(); i++) {
File soundFile = new File(view.getContext().getExternalCacheDir(),
"KuranSound/" + kuranSound.getLink() + "/" + kuranAyetList.get(i).getSureno() + "_" + kuranAyetList.get(i).getAyetno() + ".mp3");
if (!soundFile.exists()) {
final int finalI = i;
InputStreamVolleyRequest request = new InputStreamVolleyRequest(Request.Method.GET,
view.getContext().getResources().getString(R.string.api_kuran) +
kuranSound.getLink() + "/" + kuranAyetList.get(i).getSureno() + "_" + kuranAyetList.get(i).getAyetno() + ".mp3",
new Response.Listener<byte[]>() {
@Override
public void onResponse(byte[] response) {
// TODO handle the response
try {
if (response != null) {
int count;
try {
input = new ByteArrayInputStream(response);
File sdCardDirectory = view.getContext().getExternalCacheDir();
File dowlandFile = new File(sdCardDirectory, "KuranSound/" +
kuranSound.getLink() + "/" +
kuranAyetList.get(finalI).getSureno() + "_" +
kuranAyetList.get(finalI).getAyetno() + ".mp3");
output = new BufferedOutputStream(new FileOutputStream(dowlandFile));
byte[] data = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO handle the error
error.printStackTrace();
}
}, null);
RequestQueue mRequestQueue = Volley.newRequestQueue(view.getContext(), new HurlStack());
request.setRetryPolicy(new DefaultRetryPolicy(50000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(request);
}
//volley ile veri indirirken bir
// öncekinin işleminin bitmesi beklenmediği
// için burada bir bekleme ayarladım ancak çok sağlıklı değil.
Thread.sleep(200);
publishProgress(i + 1);
mBuilder.setProgress(kuranAyetList.size(), i + 1, false);
mNotifyManager.notify(10, mBuilder.build());
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
Integer currentProgress = values[0];
progressDialog.setProgress(currentProgress);
}
@Override
protected void onPostExecute(String file_url) {
if (progressDialog != null) {
progressDialog.dismiss();
kuranPageFragment.setKuanAyetExists();
mBuilder.setContentText("İndirme Tamamlandı.").setProgress(0, 0, false);
mNotifyManager.notify(10, mBuilder.build());
mNotifyManager.cancel(10);
KuranSoundFragment.this.dismiss();
}
}
}
Buda verileri indirmek için kullandığım AsyncTask classım.
Sorumu yinelemek gerekir ise Thread.sleep(200) olmaz ise yapı yanlış çalışıyor bası dosyaları indirmiyor. Sebebi az çok belli for içinde volley kütüphanesi asekron çalışıyor ancak bunun önene nasıl başka yoldan geçerim. Yardımlarınızı bekliyorum. Teşekkürler.
Ezan vakti uygulamasında alarm sistemi
Öncelikle tahmin edebileceğiniz üzere bir gün içerisinde birden fazla alarm kurulan bir sistemim var elimde ve alarmlarımı kurarken kullanıcıdan daha önceden alınan verileride kullanmam gerekiyor. Alarm kurma çalma sırasında sıkıntım yok ancak sorunum alarmları silmekte. Örnek ile anlatmaya çalışacağım; diyelim saar 01:30 ve kullanıcının var olan tüm alarmları kurulu ben saati birden 23:00 yaptığımda aradaki tüm alarmlar çalıyor ve çok kötü bir görüntü oluşuyor uygulama adına. Şimdi uygulamada işleyişi anladığınızı düşünerek soruyorum ben bu alarmları çalmadan nasıl iptal edebilirim. Aşağıya alarmları kuran BroadcastReceiver kodlarını bırakıyorum.
Düzenleme :
Alarmları kurma biçimimde mi br hata var acaba ?
package com.vaktinde.app.servis;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import androidx.core.content.ContextCompat;
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 com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vaktinde.app.R;
import com.vaktinde.app.activity.MainActivity;
import com.vaktinde.app.constants.Constants;
import com.vaktinde.app.data.SettingDB;
import com.vaktinde.app.entity.Vakit;
import com.vaktinde.app.time.DateRegulative;
import com.vaktinde.app.time.MyDateFormat;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* Created by Recep Özen on 21.10.2019.
*/
public class SensorRestarterBroadcastReceiver extends BroadcastReceiver {
private Context context;
private Vakit currentVakit;
@Override
public void onReceive(final Context context, Intent intent) {
this.context = context;
Intent myServiceIntent = new Intent(context, MyService.class);
if (!servisCalisiyormu()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(myServiceIntent);
ContextCompat.startForegroundService(context, myServiceIntent);
} else {
context.startService(myServiceIntent);
ContextCompat.startForegroundService(context, myServiceIntent);
}
Log.e("Servis", "SensorRestarterBroadcastReceiver Servis başlatıldı");
}
//Intent myIntent = new Intent(context, AlarmsDeleteBroadcastReceiver.class);
//context.sendBroadcast(myIntent);
List<Vakit> vakitList = onStartCommand();
if (vakitList != null)
getcurrentVakit(vakitList);
Log.e("Servis", "-------------------------------------------");
}
public void onClick() {
List<Integer> getDkList = new ArrayList<>();
List<Boolean> getVakittenOnceList = new ArrayList<>();
List<String> vakitler = new ArrayList<>();
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.IMSAK, 45).getValue_int());
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.GUNES, 45).getValue_int());
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.OGLE, 45).getValue_int());
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.IKINDI, 45).getValue_int());
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.AKSAM, 45).getValue_int());
getDkList.add(SettingDB.getInstance(context).getSetting(Constants.YATSI, 45).getValue_int());
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_once_sabah", 1).getValue_int()));
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("gunesten_once", 1).getValue_int()));
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_once_ogle", 1).getValue_int()));
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_once_ikindi", 1).getValue_int()));
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_once_aksam", 1).getValue_int()));
getVakittenOnceList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_once_yatsi", 1).getValue_int()));
boolean kadin_ozel = getIntConvertBoolean(SettingDB.getInstance(context).getSetting("kadin_ozel", 0).getValue_int());
if (!kadin_ozel) {
vakitler.add(currentVakit.getImsak());
vakitler.add(currentVakit.getGunes());
vakitler.add(currentVakit.getOgle());
vakitler.add(currentVakit.getIkindi());
vakitler.add(currentVakit.getAksam());
vakitler.add(currentVakit.getYatsi());
for (int i = 0; i < getDkList.size(); i++) {
String vakitFark;
switch (getDkList.get(i)) {
case 5:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:05", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 10:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:10", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 15:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:15", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 20:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:20", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 25:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:25", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 30:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:30", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 45:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("00:45", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
case 1:
if (getVakittenOnceList.get(i)) {
vakitFark = DateRegulative.getInstance().getStringFormat(farkHesap("01:00", vakitler.get(i)));
if (getHangiVakit(vakitFark) != null) {
setAlarmV(vakitFark, 11 + i);
}
}
break;
}
}
List<Boolean> getVaktindeList = new ArrayList<>();
getVaktindeList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_sabah", 1).getValue_int()));
getVaktindeList.add(false);
getVaktindeList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_ogle", 1).getValue_int()));
getVaktindeList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_ikindi", 1).getValue_int()));
getVaktindeList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_aksam", 1).getValue_int()));
getVaktindeList.add(getIntConvertBoolean(SettingDB.getInstance(context).getSetting("vaktinde_yatsi", 1).getValue_int()));
boolean is_sabah_ezani_imsak = getIntConvertBoolean(SettingDB.getInstance(context).getSetting("is_sabah_ezani_imsak", 0).getValue_int());
boolean is_vakitler_sessiz = getIntConvertBoolean(SettingDB.getInstance(context).getSetting("is_vakitler_sessiz", 0).getValue_int());
boolean is_cumada_sessiz = getIntConvertBoolean(SettingDB.getInstance(context).getSetting("is_cumada_sessiz", 0).getValue_int());
if (getVaktindeList.get(0))
if (getHangiVakit(currentVakit.getImsak()) != null) {
MyDateFormat myDateFormat = farkHesap("01:00", currentVakit.getGunes());
String sDate = DateRegulative.getInstance().getStringFormat(myDateFormat);
if (!is_sabah_ezani_imsak) {
setAlarm(sDate.substring(0, 5), 5);
setVakitSessiz(is_vakitler_sessiz, sDate.substring(0, 5), 55, 0);
} else {
setAlarm(currentVakit.getImsak(), 5);
setVakitSessiz(is_vakitler_sessiz, currentVakit.getImsak(), 55, 0);
}
}
if (getVaktindeList.get(1))
if (getHangiVakit(currentVakit.getGunes()) != null) {
setAlarm(currentVakit.getGunes(), 6);
}
if (getVaktindeList.get(2))
if (getHangiVakit(currentVakit.getOgle()) != null) {
setAlarm(currentVakit.getOgle(), 7);
Calendar rightNow = Calendar.getInstance();
if (rightNow.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY && is_cumada_sessiz) {
setCumaSessiz(currentVakit.getOgle());
} else {
setVakitSessiz(is_vakitler_sessiz, currentVakit.getOgle(), 56, 1);
}
}
if (getVaktindeList.get(3))
if (getHangiVakit(currentVakit.getIkindi()) != null) {
setAlarm(currentVakit.getIkindi(), 8);
setVakitSessiz(is_vakitler_sessiz, currentVakit.getIkindi(), 57, 2);
}
if (getVaktindeList.get(4))
if (getHangiVakit(currentVakit.getAksam()) != null) {
setAlarm(currentVakit.getAksam(), 9);
setVakitSessiz(is_vakitler_sessiz, currentVakit.getAksam(), 58, 3);
}
if (getVaktindeList.get(5))
if (getHangiVakit(currentVakit.getYatsi()) != null) {
setAlarm(currentVakit.getYatsi(), 10);
setVakitSessiz(is_vakitler_sessiz, currentVakit.getYatsi(), 59, 4);
}
}
}
private void setVakitSessiz(boolean is_vakitler_sessiz, String time, int i, int timeZone) {
if (is_vakitler_sessiz) {
MyDateFormat myGetDate = farkHesap("00:01", time);
String date = DateRegulative.getInstance().getStringFormat(myGetDate);
setAlarmSessizOn(date, i, timeZone);
}
}
private void setCumaSessiz(String time) {
int cuma_sessiz_once = getIntConverterInt(SettingDB.getInstance(context).getSetting("cuma_sessiz_once", 0).getValue_int());
String sDate;
if (cuma_sessiz_once == 0) {
sDate = "00:" + cuma_sessiz_once + "0";
} else {
sDate = "00:" + cuma_sessiz_once;
}
if (cuma_sessiz_once == 60) {
sDate = "01:00";
}
MyDateFormat myGetDate = farkHesap(sDate, time);
String date = DateRegulative.getInstance().getStringFormat(myGetDate);
setAlarmCumaOn(date);
}
private int getIntConverterInt(int sessiz_sabah) {
List<Integer> list = new ArrayList<>();
list.clear();
list.add(0);
list.add(15);
list.add(30);
list.add(45);
list.add(60);
switch (sessiz_sabah) {
case 0:
return list.get(0);
case 1:
return list.get(1);
case 2:
return list.get(2);
case 3:
return list.get(3);
case 4:
return list.get(4);
}
return 0;
}
private void setAlarm(String hour, int i) {
@SuppressLint("SimpleDateFormat") final SimpleDateFormat formatter = new SimpleDateFormat("dd:MM:yyyy / HH:mm:ss");
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.substring(0, 2)));
setTime.set(Calendar.MINUTE, Integer.valueOf(hour.substring(3, 5)));
setTime.set(Calendar.SECOND, 0);
setTime.set(Calendar.MILLISECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, VaktindeBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), pendingIntent);
} else {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Log.e("Vaaktinde", formatter.format(setTime.getTime()) + " " + i);
}
}
private void setAlarmV(String hour, int i) {
@SuppressLint("SimpleDateFormat") final SimpleDateFormat formatter = new SimpleDateFormat("dd:MM:yyyy / HH:mm:ss");
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.substring(0, 2)));
setTime.set(Calendar.MINUTE, Integer.valueOf(hour.substring(3, 5)));
setTime.set(Calendar.SECOND, 0);
setTime.set(Calendar.MILLISECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, VaktindenOnceBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), pendingIntent);
} else {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Log.e("VaktindenOnce", formatter.format(setTime.getTime()) + " " + i);
}
}
private void setAlarmSessizOn(String hour, int i, int timeZone) {
@SuppressLint("SimpleDateFormat") final SimpleDateFormat formatter = new SimpleDateFormat("dd:MM:yyyy / HH:mm:ss");
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.substring(0, 2)));
setTime.set(Calendar.MINUTE, Integer.valueOf(hour.substring(3, 5)));
setTime.set(Calendar.SECOND, 0);
setTime.set(Calendar.MILLISECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, SessizOnBroadcastReceiver.class);
broadcastIntent.putExtra("time_zone", timeZone);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), pendingIntent);
} else {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Log.e("SessizOn", formatter.format(setTime.getTime()) + " " + i);
}
}
private void setAlarmCumaOn(String hour) {
@SuppressLint("SimpleDateFormat") final SimpleDateFormat formatter = new SimpleDateFormat("dd:MM:yyyy / HH:mm:ss");
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.substring(0, 2)));
setTime.set(Calendar.MINUTE, Integer.valueOf(hour.substring(3, 5)));
setTime.set(Calendar.SECOND, 0);
setTime.set(Calendar.MILLISECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, CumaOnBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 60, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), pendingIntent);
} else {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, setTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Log.e("CumaOn", formatter.format(setTime.getTime()) + " " + 60);
}
}
private void getcurrentVakit(List<Vakit> vakitList) {
@SuppressLint("SimpleDateFormat") SimpleDateFormat formatterOnlyDate = new SimpleDateFormat("dd.MM.yyyy");
Date date = new Date(System.currentTimeMillis());
String sDate = formatterOnlyDate.format(date);
for (int i = 0; i < vakitList.size(); i++) {
if (sDate.equals(vakitList.get(i).getMiladiTarihKisa())) {
currentVakit = vakitList.get(i);
onClick();
break;
}
}
}
private String getSTR(int str) {
return context.getResources().getString(str);
}
public List<Vakit> onStartCommand() {
String response = SettingDB.getInstance(context).getSetting("vakitler", null).getValue_str();
Constants.selectedTownCod = SettingDB.getInstance(context).getSetting("selectedTownCod", null).getValue_str();
List<Vakit> vakitList = new ArrayList<>();
if (response == null) {
if (Constants.selectedTownCod != null) {
getVakitler(getSTR(R.string.api_town) + Constants.selectedTownCod);
return Constants.vakitList;
}
} else {
try {
byte[] u = response.getBytes(
"ISO-8859-1");
response = new String(u, "UTF-8");
Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<Vakit>>() {
}.getType();
vakitList = gson.fromJson(response, listType);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (vakitList != null && vakitList.size() > 1) {
Constants.vakitList = vakitList;
return vakitList;
}
}
return null;
}
private void getVakitler(String postUrl) {
final RequestQueue queue = Volley.newRequestQueue(context);
StringRequest postRequest = new StringRequest(Request.Method.GET, postUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (!response.equals("")) {
List<Vakit> vakitList = new ArrayList<>();
try {
byte[] u = response.getBytes(
"ISO-8859-1");
response = new String(u, "UTF-8");
Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<Vakit>>() {
}.getType();
vakitList = gson.fromJson(response, listType);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (vakitList != null && vakitList.size() > 1) {
Constants.vakitList = vakitList;
SettingDB.getInstance(context).duzenle("vakitler", response);
}
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
queue.add(postRequest);
}
private String getHangiVakit(String vakit) {
MyDateFormat myDateFormat = farkHesap(vakit);
if (myDateFormat.getsDay() == 0 && myDateFormat.getsMonth() == 0 && myDateFormat.getsYear() == 0) {
if (myDateFormat.getsHour() != 0 || myDateFormat.getsMinute() != 0 || myDateFormat.getsSecond() != 0) {
//Log.e("Geçerli Vakit: ", vakit);
return vakit;
}
}
return null;
}
private MyDateFormat farkHesap(String vakit) {
String h = "0";
String m = "0";
if (vakit != null && !vakit.equals("")) {
h = vakit.substring(0, 2);
m = vakit.substring(3, 5);
}
Calendar currentDiffirentTime = Calendar.getInstance();
currentDiffirentTime.set(Calendar.YEAR, 0);
currentDiffirentTime.set(Calendar.MONTH, 0);
currentDiffirentTime.set(Calendar.DAY_OF_MONTH, 0);
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.YEAR, 0);
setTime.set(Calendar.MONTH, 0);
setTime.set(Calendar.DAY_OF_MONTH, 0);
setTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(h));
setTime.set(Calendar.MINUTE, Integer.valueOf(m));
setTime.set(Calendar.SECOND, 0);
return DateRegulative.getInstance().getDifference(setTime.getTimeInMillis(), currentDiffirentTime.getTimeInMillis());
}
private MyDateFormat farkHesap(String simdikiVakit, String birSonrakiVakit) {
String h1 = simdikiVakit.substring(0, 2);
String m1 = simdikiVakit.substring(3, 5);
String h2 = birSonrakiVakit.substring(0, 2);
String m2 = birSonrakiVakit.substring(3, 5);
Calendar oldTime = Calendar.getInstance();
oldTime.set(Calendar.YEAR, 0);
oldTime.set(Calendar.MONTH, 0);
oldTime.set(Calendar.DAY_OF_MONTH, 0);
oldTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(h1));
oldTime.set(Calendar.MINUTE, Integer.valueOf(m1));
oldTime.set(Calendar.SECOND, 0);
Calendar currentTime = Calendar.getInstance();
currentTime.set(Calendar.YEAR, 0);
currentTime.set(Calendar.MONTH, 0);
currentTime.set(Calendar.DAY_OF_MONTH, 0);
currentTime.set(Calendar.HOUR_OF_DAY, Integer.valueOf(h2));
currentTime.set(Calendar.MINUTE, Integer.valueOf(m2));
currentTime.set(Calendar.SECOND, 0);
return DateRegulative.getInstance().getDifference(currentTime.getTimeInMillis(), oldTime.getTimeInMillis());
}
private boolean getIntConvertBoolean(int vaktinde_sabah) {
return vaktinde_sabah == 1;
}
public boolean servisCalisiyormu() {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MyService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
}
Ayrıca alarmları silmek için önceden yazdığım ama işlevi olmayan kodlarıda buraya koyuyorum ;
package com.vaktinde.app.servis;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import androidx.core.content.ContextCompat;
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 com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vaktinde.app.R;
import com.vaktinde.app.constants.Constants;
import com.vaktinde.app.data.SettingDB;
import com.vaktinde.app.entity.Vakit;
import com.vaktinde.app.time.DateRegulative;
import com.vaktinde.app.time.MyDateFormat;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* Created by recep on 21.03.2017.
*/
public class AlarmsDeleteBroadcastReceiver extends BroadcastReceiver {
private Context context;
@Override
public void onReceive(final Context context, Intent intent) {
this.context = context;
onClick();
}
public void onClick() {
// Alarmların sıfırlandığı bölüm
List<Integer> requestCodList_00 = new ArrayList<>();
//Vakitlerde sessiz istek kodları
requestCodList_00.add(55);
requestCodList_00.add(56);
requestCodList_00.add(57);
requestCodList_00.add(58);
requestCodList_00.add(59);
for (int i : requestCodList_00) {
alarmKillerSessiz(i);
}
alarmKillerCuma(60); // cuma sessiz istek kodu
List<Integer> requestCodList_01 = new ArrayList<>();
//Vakitlerden önce kullanılan istek kodları
requestCodList_01.add(11);
requestCodList_01.add(12);
requestCodList_01.add(13);
requestCodList_01.add(14);
requestCodList_01.add(15);
requestCodList_01.add(16);
requestCodList_01.add(99); // Vaktinde Önce Erteleme İstek Kodu
for (int i : requestCodList_01) {
alarmKillerVaktindenOnce(i);
}
List<Integer> requestCodList_02 = new ArrayList<>();
//Vakitlerde kullanılan istek kodları
requestCodList_02.add(5);
requestCodList_02.add(6);
requestCodList_02.add(7);
requestCodList_02.add(8);
requestCodList_02.add(9);
requestCodList_02.add(10);
for (int i : requestCodList_02) {
alarmKillerVaktinde(i);
}
/*Intent broadcastIntent = new Intent(context, SensorRestarterBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 120, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_HALF_HOUR,
AlarmManager.INTERVAL_HALF_HOUR, pendingIntent);
}*/
}
private void alarmKillerVaktindenOnce(int requestCod) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, VaktindenOnceBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCod, broadcastIntent, 0);
if (alarmManager != null && pendingIntent != null) {
alarmManager.cancel(pendingIntent);
Log.e("alarmKiller", requestCod + " istek kodlu alarm iptal edildi.");
}
}
private void alarmKillerVaktinde(int requestCod) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, VaktindeBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCod, broadcastIntent, 0);
if (alarmManager != null && pendingIntent != null) {
alarmManager.cancel(pendingIntent);
Log.e("alarmKiller", requestCod + " istek kodlu alarm iptal edildi.");
}
}
private void alarmKillerSessiz(int requestCod) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, SessizOnBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCod, broadcastIntent, 0);
if (alarmManager != null && pendingIntent != null) {
alarmManager.cancel(pendingIntent);
Log.e("alarmKiller", requestCod + " istek kodlu alarm iptal edildi.");
}
}
private void alarmKillerCuma(int requestCod) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent broadcastIntent = new Intent(context, CumaOnBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCod, broadcastIntent, 0);
if (alarmManager != null && pendingIntent != null) {
alarmManager.cancel(pendingIntent);
Log.e("alarmKiller", requestCod + " istek kodlu alarm iptal edildi.");
}
}
private String getSTR(int str) {
return context.getResources().getString(str);
}
}
Kurulmuş AlarmManager iptal işlemini nasıl yaparım ?
Merhaba yadığım bir uygulamada aktif olarak gün içinde alarmlar kuruluyor. Bazı durumlarda alarmların silinmesi gerekli bunu nasıl yapabilirim araştırdığım çoğu yöntem beni bu soruyu sormaya itti. am.cancel(pedingIntent) diye bir şey bulmuş olmama rağmen çalışmadığından soruyorum.
Foreground servisim tuşlar kilitliyken çalışmıyor.
Öncelikle merhaba, aslında sorunun ne olduğunu az çok tahmin etmeme rağmen halen bir çözüm bulabilmiş değilim. Soruna gelir isek, benim bir foreground(Ön plan) servisim var ve bu uygulamadan ayrı bir thread de sürekli olarak çalışıyor ve belli aralıklarla bildirim atıyor. Ancak tuşlar kilitliyken servis sanki duruyormuş gibi oluyor ve bildirim gelmiyor. Sebebini çözemememin sebeyse telefon güç kablosu takılıncada tam istediğim gibi çalışıyor. Telefonun bağlantısını tuşları kilitledikten sonrra her hangi bir bildirim almıyorum. Bu konu hakkında en udak bir fikri olana gerçekten minnetar kalırım. Teşekkürler.
Trendyol gibi sitenin veri tabanını yazmak
Size tavsiyem öncelikle işi planlamanız yani amaç ne kullanıcı sadece uygulama üzerinden mi alış veriş yapmalı site üzerinden alışveriş olmamalı mı ayrıca hedef kullanıcı kitlesi ne bunları belirleyip teknoloji seçimi yapmalısınız. Firebase ile böyle bir projeyi yapabilirsiniz ancak performanslı olur mu orası tartışmalı olur. En basitinden Firebase de bağlantılı veri çekme yani sql query işlemi yok. Buda sorunları beraberinde getiriyor. Bir kullanıcının önce kendi tablosuna sonra başka bir tablodaki bir verisine iki sorgu ile ulaşmak zorunda kalıyorsunuz. Tabi sadece bir örnek. Diyelim ana şema belli projeye başlanacak firebase kullanılmayacak bir başka back-end yapısı ile php ,node.js gibi yapılar kullanılacak ilk veri tabanlarını tanımlamalısınız yani neye ihtiyacınız var onların şemalarını çıkartıp back end i yazmalısınız. ardından uygulamaya geçe bilirsiniz. Back-end i sizin yazmanız size daha fazla kontol sağlayacaktır. Hem bir kere yazdıktan sonra ios android web de istediğiniz gibi kullanabilrisiniz
Mobil Uygulama Geliştirmek, Haber, Duyuru, Etkinlik Ekleme
Bildirim sistemi üzerinden bu işi yapabilirsiniz. Firebase bildirim sistemini bağlayarak onesignal ile istediğiniz kişi veya guplara web sitesi veya admin panel olmadan anlık bildirim gönderebilrisiniz. Uygulamanızın kodları var ise size bu konuda yardımcı olurum.
Java kodlamasını nasıl yapabilirim yardımcı olabilir misiniz?
Şöyle birşey olmalı
private int getVirguldenSonraKacBasamak(float sayi) {
double sonuc = 1 / sayi;
String sSonuc = sonuc + "";
String viguldenSonra = sSonuc.substring(sSonuc.lastIndexOf(".") + 1, sSonuc.length());
return viguldenSonra.length();
}
girisButtonu bu buttona tıkladığımda Unfortunately has stopped hatası alıyorum
bir view elemanın tanımını yanlış yaptığını var sayıyorum. NullPointerException hatası alıyorsun LoginActivity.java:65 satıra dikkatli bakmalısın
Java ile Android programlamada unfortunately has stopped hatası alıyorum
Kod paylaşmadan yardımcı olamayacağım xml ve java kodunuzu paylaşırsanız yardımcı olalım