TrueTime Иногда не дает значения - PullRequest
0 голосов
/ 15 апреля 2020

В моем приложении реализовано Truetime . Это работает нормально, но иногда, когда я открываю свое приложение, я не получаю значение. Я установил метод ежедневного вознаграждения, но если это произойдет, это будет большой проблемой.

Вот код, по которому я получаю время:

class GoogleTime extends AsyncTask<Void,Void,Void> {
        @SuppressLint("CheckResult")
        @Override
        protected Void doInBackground(Void... voids) {

            try {
                TrueTime.build().initialize();

                TrueTimeRx.build()
                        .initializeRx("time.google.com")
                        .subscribeOn(Schedulers.io())
                        .subscribe(date -> {
                           java.util.Date da = TrueTimeRx.now();
                            Log.w("PPPPP", "TrueTime was initialized and we have a time: " + da);

                            String mm= String.valueOf(da);

                            String name   = mm.substring(0, mm.lastIndexOf("GMT+06:00"));
                            String yyy   = mm.substring(mm.length()-4);

                            String f = name+yyy;
                            String []strArray=f.split(" ");

                            Month = getMonthInIntFormat(strArray[1]);
                            String dd = strArray[2];
                            String yy = strArray[4];


                            String  Datw = dd +""+Month+""+yy;


                            TotalDate =Integer.parseInt(Datw);

                            Log.w("PPPPP", "TrueTime was initialized and we have a time: " + TotalDate);


                        }

                        , Throwable::printStackTrace);


            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }


    }

Я выполнил класс при создании. Я также получаю сообщение об ошибке .subscribe(date -> {. Его выражение Resultof Single.subscribe () игнорируется.

1 Ответ

1 голос
/ 16 апреля 2020

Используя HttpGet, Client и Response, мне удается получить текущее время сервера из заголовка даты ответа. Я могу звонить так все время, когда захочу, и получу уверенные ответы (Google почти на 100% доступен, и я могу доверять при получении правильных даты и времени)

try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = httpclient.execute(new HttpGet("https://google.com/"));
        StatusLine statusLine = response.getStatusLine();
        if(statusLine.getStatusCode() == HttpStatus.SC_OK){
            String dateStr = response.getFirstHeader("Date").getValue();
            //Here I do something with the Date String
            System.out.println(dateStr);

        } else{
            //Closes the connection.
            response.getEntity().getContent().close();
            throw new IOException(statusLine.getReasonPhrase());
        }
    }catch (ClientProtocolException e) {
        Log.d("Response", e.getMessage());
    }catch (IOException e) {
        Log.d("Response", e.getMessage());
    }
...