Android 启动服务时出现运行时异常

Android 启动服务时出现运行时异常,android,service,gps,runtime,Android,Service,Gps,Runtime,我的程序有两个服务。一个服务是GPSTracker,另一个是PlayerService。GPSTraker必须从用户那里获得LatLng,PlayerService必须在用户进入某个特定区域时播放该区域的音乐 当启动程序时,用户可以设置本地和本地音乐。该程序启动一个播放活动,用户可选择某个区域的音乐文件。 选择音乐后,gps将验证用户的位置,并播放您所在地区的音乐。GPSTracker包含用于启动音乐文件的服务PlayerService 在主活动中,此程序调用用户选择文件的服务 builder

我的程序有两个服务。一个服务是GPSTracker,另一个是PlayerService。GPSTraker必须从用户那里获得LatLng,PlayerService必须在用户进入某个特定区域时播放该区域的音乐

当启动程序时,用户可以设置本地和本地音乐。该程序启动一个播放活动,用户可选择某个区域的音乐文件。 选择音乐后,gps将验证用户的位置,并播放您所在地区的音乐。GPSTracker包含用于启动音乐文件的服务PlayerService

在主活动中,此程序调用用户选择文件的服务

 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    m_Text = input.getText().toString();

                    CircleOptions circleOptions = new CircleOptions();
                    circleOptions.center(new LatLng(point.latitude,point.longitude));
                    circleOptions.radius(Double.parseDouble(m_Text));
                    circleOptions.strokeColor(Color.BLACK);
                    circleOptions.fillColor(0x5500ff00);
                    circleOptions.strokeWidth(2);


                    circles.add(googleMap.addCircle(circleOptions));

                    Intent i = new Intent (getApplicationContext(), PlayListActivity.class);
                    startActivityForResult(i, 100);

                }
            });
并且有一个回调函数

 protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode,  resultCode, data);
    HashMap<String, String> resultado;
    if(resultCode != 0 && resultCode != RESULT_CANCELED)    
        if(resultCode == 100){
            int index = data.getExtras().getInt("songIndex");
            Log.i("Main:Extra", String.valueOf(index));
            resultado = songsList.get(index);
            String path = resultado.get("songPath");

            gps.addPath(path);
            gps.verifyPosition();
        }
}
activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
HashMap-resultado;
if(resultCode!=0&&resultCode!=RESULT\u取消)
如果(结果代码==100){
int index=data.getExtras().getInt(“歌曲索引”);
Log.i(“Main:Extra”,String.valueOf(index));
resultado=songsList.get(索引);
stringpath=resultado.get(“songPath”);
gps.addPath(路径);
gps.verifyPosition();
}
}
在PlayerLisActivity中,当用户选择音乐时,将结果返回主活动

                    @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Intent in = new Intent(getApplicationContext(), MainActivity.class);
            Log.i("Play:Extra", String.valueOf(songIndex));
            in.putExtra("songIndex", songIndex);
            setResult(100, in);
            finish();


        }
@覆盖
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Intent in=新的Intent(getApplicationContext(),MainActivity.class);
Log.i(“Play:Extra”,String.valueOf(songIndex));
in.putExtra(“歌曲索引”,songIndex);
设置结果(100,英寸);
完成();
}
在GPSTracker中,它创建了关于构造函数的意图: playerService=新意图(上下文,playerService.class)

当主活动调用gps.verifyPosition()时,当startService(playerService)时,我得到一个错误

public void verifyPosition(){
    float[] distance = new float[2];
    int i = 0;


    if(circles != null)
        for(Circle c : circles){
            Location.distanceBetween( marker.getPosition().latitude, marker.getPosition().longitude,
                    c.getCenter().latitude, c.getCenter().longitude, distance);


            if( distance[0] < c.getRadius()  ){

                Log.i("TRACKER:MUSICA", paths.get(i));

                playerService.putExtra("path", paths.get(i));
                startService(playerService);
                break;
            }

            i++;
        }
}



    05-22 15:24:06.919: E/AndroidRuntime(2110): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=100, data=Intent { cmp=com.example.radiomap/.MainActivity (has extras) }} to activity {com.example.radiomap/com.example.radiomap.MainActivity}: java.lang.NullPointerException
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3500)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread.access$1200(ActivityThread.java:159)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.os.Looper.loop(Looper.java:176)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread.main(ActivityThread.java:5419)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at java.lang.reflect.Method.invoke(Method.java:525)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at dalvik.system.NativeStart.main(Native Method)
    05-22 15:24:06.919: E/AndroidRuntime(2110): Caused by: java.lang.NullPointerException
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.content.ContextWrapper.startService(ContextWrapper.java:480)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at com.example.radiomap.GPSTracker.verifyPosition(GPSTracker.java:240)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at com.example.radiomap.MainActivity.onActivityResult(MainActivity.java:228)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.Activity.dispatchActivityResult(Activity.java:5563)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3496)
    05-22 15:24:06.919: E/AndroidRuntime(2110):     ... 11 more
public void verifyPosition(){
浮动[]距离=新浮动[2];
int i=0;
if(圆!=null)
用于(圆c:圆){
Location.distanceBetween(marker.getPosition().纬度,marker.getPosition().经度,
c、 getCenter().纬度,c.getCenter().经度,距离);
if(距离[0]

有人能帮我吗?

第240行的
GPSTracker.java
上有什么?startService(playerService);密码在邮局上!您可以添加以前的日志条目(即在stacktrace之前在logcat中打印的内容)吗?