Nano Hash - криптовалюты, майнинг, программирование

Невозможно получить доступ к местоположению в AsynTask при использовании с широковещательным приемником, тревогой и ожидающими намерениями

Я использую Broadcast Receiver и Alarm with Pending Intent, чтобы запустить мою службу на BOOT_COMPLETE с некоторым фиксированным таймером. И я предоставляю статические значения переменной, а затем передаю их на веб-сервер (сервлет), пока этот мой код работает нормально ... но когда я добавляю Диспетчер местоположения, чтобы получить реальные координаты, приложение вылетает !! ошибка :: NULLPOinterException, !!! подскажите где я не прав!! будет самым детским.. спасибо !! [также хочу открыть камеру, когда ответ получен от сервлета, о чем я упоминал в комментарии внутри кода! ]

Это мой широковещательный приемник

    public class StartAtBootServiceReceiver extends BroadcastReceiver 
{

    // receives BOOT_COMPLETed from manifest ,,plus added here Alarm
    public void onReceive(Context context, Intent intent) 
    {

        Calendar cal = Calendar.getInstance();
        Intent srvIntent = new Intent(context, StartAtBootService.class);

        PendingIntent pIntent = PendingIntent.getService(context, 0, srvIntent,0);
        // Use context argument to access service
        AlarmManager alarm = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);

        // Repeat every 5 seconds
        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                cal.getTimeInMillis(), 10000, pIntent);
    }

}

Это мой класс службы Java

    public class StartAtBootService extends Service {
    public static final String url = "http://10.0.2.2:1010/junction/AsynLocInsertionServ"; 
    String imei = "0";
    double latitude = 000;
    double longitude = 000;

    String returnString = null;
    Integer returnedValue = 0;

    private LocationManager lm;

    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Log.d("StartServiceAtBoot1", "StartAtBootService Created1");

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Log.d("StartServiceAtBoot2", "StartAtBootService -- onStartCommand()");

        // Get LocationManager object from System Services LOCATION_SERVICES
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);

        // create a criteria object to retrieve provider
        Criteria criteria = new Criteria();

        // Get the name of the best provider
        String provider = lm.getBestProvider(criteria, true);

        // Get current Location
        Location myLocation = lm.getLastKnownLocation(provider);

        // get latitude of the current location
        latitude = myLocation.getLatitude();

        // get longitude of the current location
        longitude = myLocation.getLongitude();

        Toast.makeText(this, "onStart tryyyy", Toast.LENGTH_LONG).show();

        deviceInfo(); // my method for getting imei

        new GetXMLTask().execute(url); // calls the AsynTask

        return START_STICKY;

    }

    public void deviceInfo() {
        // TODO Auto-generated method stub

        TelephonyManager t = (TelephonyManager) this
                .getSystemService(Context.TELEPHONY_SERVICE);
        imei = t.getDeviceId();

    }

    // *************************************************************************************************//

    private class GetXMLTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String output = null;

            try {
                DefaultHttpClient httpClient = new DefaultHttpClient();

                HttpPost httpPost = new HttpPost(url);

                try {

                    String latitude1 = String.valueOf(latitude);
                    String longitude2 = String.valueOf(longitude);

                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("param1imei",
                            imei));
                    nameValuePairs.add(new BasicNameValuePair("param2lati",
                            latitude1));
                    nameValuePairs.add(new BasicNameValuePair("param3longi",
                            longitude2));
                    // nameValuePairs.add(new BasicNameValuePair("param4bts",
                    // bts));
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    HttpResponse httpResponse = httpClient.execute(httpPost);

                    HttpEntity httpEntity = httpResponse.getEntity();
                    output = EntityUtils.toString(httpEntity);

                }// end of inner try block

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

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

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

                }

            } // end of outer try block

            catch (Exception e) {
                Log.e("log_tag", "Error in http connection " + e.toString());

            }

            return output;

        } // end of getOutputFromUrl method

        @Override
        protected void onPostExecute(String output) {
            super.onPostExecute(output);

            Log.d("done LAtlong stored in mysql_onPost method",
                    " " + output.toString());

            if (true) // i put this true ,because i wanna to open camera
                        // i,e if the value returned from doInBackgroud method [i,e the output variable]
                        // the condition ,then open camera
            {
                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                getApplicationContext().startActivityForResult(intent, 0);
            }

        }

    } // end of GetXMLTask

}

НЕНАВИЖУ ЭТИ ::

    05-06 17:56:46.492: E/AndroidRuntime(748): FATAL EXCEPTION: main
05-06 17:56:46.492: E/AndroidRuntime(748): java.lang.RuntimeException: Unable to start service r.fn.sender.StartAtBootService@40ce9358 with Intent { flg=0x4 cmp=r.fn.sender/.StartAtBootService (has extras) }: java.lang.NullPointerException
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2673)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.app.ActivityThread.access$1900(ActivityThread.java:141)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.os.Looper.loop(Looper.java:137)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.app.ActivityThread.main(ActivityThread.java:5039)
05-06 17:56:46.492: E/AndroidRuntime(748):  at java.lang.reflect.Method.invokeNative(Native Method)
05-06 17:56:46.492: E/AndroidRuntime(748):  at java.lang.reflect.Method.invoke(Method.java:511)
05-06 17:56:46.492: E/AndroidRuntime(748):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-06 17:56:46.492: E/AndroidRuntime(748):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-06 17:56:46.492: E/AndroidRuntime(748):  at dalvik.system.NativeStart.main(Native Method)
05-06 17:56:46.492: E/AndroidRuntime(748): Caused by: java.lang.NullPointerException
05-06 17:56:46.492: E/AndroidRuntime(748):  at r.fn.sender.StartAtBootService.onStartCommand(StartAtBootService.java:106)
05-06 17:56:46.492: E/AndroidRuntime(748):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2656)
05-06 17:56:46.492: E/AndroidRuntime(748):  ... 10 more



**manifest permissions**


    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

  • Можете ли вы включить трассировку стека? 06.05.2014

Ответы:


1

Попробуйте установить свой LocationManager в методе onCreate().

@Override
public void onCreate() {
    Log.d("StartServiceAtBoot1", "StartAtBootService Created1");
    lm = (LocationManager) getSystemService(LOCATION_SERVICE);
}
06.05.2014
  • я включил все разрешения ... я поставил статическое местоположение как глобальное. а именно двойная широта = 000; и двойная долгота = 000; А эти перебиваются пишут ничего не работает.. 06.05.2014
  • удалите всплывающее сообщение как из метода ловушки, onCreat, так и из onstartcmd .. но все еще не можете открыть камеру !!! 06.05.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..