如何在前台服务中请求LocationUpdate方法

如何解决如何在前台服务中请求LocationUpdate方法

我的的士应用程序即使在后台/ 我试图通过前台通知 我成功地运行了具有通知前台服务,但没有运行位置更新 这是服务

public class ExampleService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public int onStartCommand(Intent intent,int flags,int startId) {
        String input = intent.getStringExtra("inputExtra");
        Intent notificationIntent = new Intent(this,MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this,notificationIntent,0);
        MainActivity.setCurrentLocation startLocationUpdate = new MainActivity.setCurrentLocation( );
        Notification notification = new NotificationCompat.Builder(this,CHANNEL_ID)

                .setContentTitle("Example Service")
                .setContentText(input)
                .setSmallIcon(R.drawable.ic_calendar)
                .setContentIntent(pendingIntent)
                .build();
        startForeground(1,notification);


        //do heavy work on a background thread
        //stopSelf();
        return START_NOT_STICKY;
    }



    @Override
    public void onDestroy() {
        super.onDestroy();
    }

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

这是MainActivity

/** Update driver location **/
    public static class setCurrentLocation extends AsyncTask<String,Void,String> {
        @Override
        protected String doInBackground(String... params) {
            String url = AppConst.Server_url+"set_position.PHP";
            final String latitude = params[0];
            final String longitude = params[1];
            StringRequest jsonObjReq = new StringRequest(Request.Method.POST,url,new Response.Listener<String>() {

                        @Override
                        public void onResponse(String response) {

                        }
                    },new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

                }

            }) {

                @Override
                protected Map<String,String> getParams() {
                    Map<String,String> params = new HashMap<String,String>();
                    params.put("id_user",M.getID(context));
                    params.put("user_cat",M.getUserCategorie(context));
                    params.put("latitude",latitude);
                    params.put("longitude",longitude);
                    return params;
                }

            };
            AppController.getInstance().addToRequestQueue(jsonObjReq);
            jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(
                    10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            //to add spacing between cards
            if (this != null) {

            }

        }

        @Override
        protected void onPreExecute() {

        }
    }


    /** Start COOGLE API Client **/
    @Override
    public void onStart() {
        super.onStart();

        if (googleapiclient != null) {
            googleapiclient.connect();


        }
    }


    @Override
    public void onStop() {
        super.onStop();

        if (googleapiclient != null) {
            googleapiclient.disconnect();
        }
    }



    @Override
    public void onConnected(@Nullable Bundle bundle) {
        if (ActivityCompat.checkSelfPermission(context,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                &&  ActivityCompat.checkSelfPermission(context,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }

        // Permissions ok,we get last location
        currentLocation = LocationServices.FusedLocationApi.getLastLocation(googleapiclient);
        startLocationUpdates();
    }



    private void startLocationUpdates() {



        if (ActivityCompat.checkSelfPermission(context,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//            Toast.makeText(this,"You need to enable permissions to display location !",Toast.LENGTH_SHORT).show();
        }


        LocationServices.FusedLocationApi.requestLocationUpdates(googleapiclient,locationRequest,this);

    }


    @Override
    public void onConnectionSuspended(int i) {
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    }

plz给出了执行此操作的确切代码,因为我通过mysefl尝试了一些代码,但对我没有任何帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?