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