Recep Özen
Recep Özen
Kocaeli
26/03/2017 tarihinden beri üye
2435 GY Puanı
608 GY Sırası
3 Rozet
0 Sertifika
7 Soru Sordu
77 Cevap Verdi
0 Blog Yazısı
8 Etiket Takibi

Hakkında

Java ve Android yazılım geliştirme uzmanı.

Java ve Android yazılım geliştirme uzmanı.

İş Tecrubesi

Kullanıcıya ait İş tecrübesi bilgisi bulunmamaktadır.

Eğitim Geçmişi

Diğer...
| Aralık 2020 - Aralık 2020

Sertifikalar & Başarılar

GY Sertifikaları (0)
Kullanıcının GY sertifikası bulunmamaktadır.
Diğer Sertifikaları (0)
Kullanıcıya ait sertifika bulunmamaktadır.
Test Sonuçları (0)

Kullanıcıya ait test sonucu bulunmamaktadır.

Dil Becerileri

Son Forum Aktiviteleri

84
Tümünü Gör

Javascript 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?

picture-112887-1506457490.jpg
16 Haziran 2020 tarihinde cevaplandı

Şö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

picture-112887-1506457490.jpg
16 Haziran 2020 tarihinde cevaplandı

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

ANDROID FARKLI İMZA HATASI

picture-112887-1506457490.jpg
16 Haziran 2020 tarihinde cevaplandı

Önceki uygulamayı kaldırmadan yenisini kurmazsınız.