这是一个Servic,这空指针···高手指教
package android.basic.lesson14; 02 03 import android.app.Service; 04 import android.content.Intent; 05 import android.media.MediaPlayer; 06 import android.os.IBinder; 07 import android.util.Log; 08 import android.widget.Toast; 09 10 public class MusicService extends Service { 11 12 //为日志工具设置标签 13 String tag ="MusicService"; 14 15 //定义音乐播放器变量 16 MediaPlayer mPlayer; 17 18 //其他对象通过bindService方法通知该Service时该方法会被调用 19 @Override 20 public IBinder onBind(Intent intent) { 21 Toast.makeText(this,"MusicService onBind()",Toast.LENGTH_SHORT).show(); 22 Log.i(tag, "MusicService onBind()"); 23 mPlayer.start(); 24 return null; 25 } 26 27 //其他对象通过unbindService方法通知该Service时该方法会被调用 28 @Override 29 public boolean onUnbind(Intent intent){ 30 Toast.makeText(this, "MusicService onUnbind()", Toast.LENGTH_SHORT).show(); 31 Log.i(tag, "MusicService onUnbind()"); 32 mPlayer.stop(); 33 return false; 34 } 35 36 //该服务不存在需要被创建时被调用,不管startService()还是bindService()都会在启动时调用该方法 37 @Override 38 public void onCreate(){ 39 Toast.makeText(this, "MusicService onCreate()", Toast.LENGTH_SHORT).show(); 40 //创建一个音乐播放器对象 41 mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu); 42 //设置可以重复播放 43 mPlayer.setLooping(true); 44 Log.i(tag, "MusicService onCreate()"); 45 } 46 47 //用startService方法调用该服务时,在onCreate()方法调用之后,会调用改方法 48 @Override 49 public void onStart(Intent intent,int startid){ 50 Toast.makeText(this,"MusicService onStart",Toast.LENGTH_SHORT).show(); 51 Log.i(tag, "MusicService onStart()"); 52 mPlayer.start(); 53 } 54 55 //该服务被销毁时调用该方法 56 @Override 57 public void onDestroy(){ 58 Toast.makeText(this, "MusicService onDestroy()", Toast.LENGTH_SHORT).show(); 59 mPlayer.stop(); 60 Log.i(tag, "MusicService onDestroy()"); 61 } 62 }
06-07 15:15:20.614: ERROR/AndroidRuntime(304): FATAL EXCEPTION: main
06-07 15:15:20.614: ERROR/AndroidRuntime(304): java.lang.RuntimeException: Unable to create service android.basic.lesson14.MusicService: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2969)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.access$3300(ActivityThread.java:125)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.os.Looper.loop(Looper.java:123)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at java.lang.reflect.Method.invoke(Method.java:521)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at dalvik.system.NativeStart.main(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): Caused by: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.basic.lesson14.MusicService.onCreate(MusicService.java:43)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2959)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): ... 10 more
package android.basic.lesson14; 02 03 import android.app.Service; 04 import android.content.Intent; 05 import android.media.MediaPlayer; 06 import android.os.IBinder; 07 import android.util.Log; 08 import android.widget.Toast; 09 10 public class MusicService extends Service { 11 12 //为日志工具设置标签 13 String tag ="MusicService"; 14 15 //定义音乐播放器变量 16 MediaPlayer mPlayer; 17 18 //其他对象通过bindService方法通知该Service时该方法会被调用 19 @Override 20 public IBinder onBind(Intent intent) { 21 Toast.makeText(this,"MusicService onBind()",Toast.LENGTH_SHORT).show(); 22 Log.i(tag, "MusicService onBind()"); 23 mPlayer.start(); 24 return null; 25 } 26 27 //其他对象通过unbindService方法通知该Service时该方法会被调用 28 @Override 29 public boolean onUnbind(Intent intent){ 30 Toast.makeText(this, "MusicService onUnbind()", Toast.LENGTH_SHORT).show(); 31 Log.i(tag, "MusicService onUnbind()"); 32 mPlayer.stop(); 33 return false; 34 } 35 36 //该服务不存在需要被创建时被调用,不管startService()还是bindService()都会在启动时调用该方法 37 @Override 38 public void onCreate(){ 39 Toast.makeText(this, "MusicService onCreate()", Toast.LENGTH_SHORT).show(); 40 //创建一个音乐播放器对象 41 mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu); 42 //设置可以重复播放 43 mPlayer.setLooping(true); 44 Log.i(tag, "MusicService onCreate()"); 45 } 46 47 //用startService方法调用该服务时,在onCreate()方法调用之后,会调用改方法 48 @Override 49 public void onStart(Intent intent,int startid){ 50 Toast.makeText(this,"MusicService onStart",Toast.LENGTH_SHORT).show(); 51 Log.i(tag, "MusicService onStart()"); 52 mPlayer.start(); 53 } 54 55 //该服务被销毁时调用该方法 56 @Override 57 public void onDestroy(){ 58 Toast.makeText(this, "MusicService onDestroy()", Toast.LENGTH_SHORT).show(); 59 mPlayer.stop(); 60 Log.i(tag, "MusicService onDestroy()"); 61 } 62 }
06-07 15:15:20.614: ERROR/AndroidRuntime(304): FATAL EXCEPTION: main
06-07 15:15:20.614: ERROR/AndroidRuntime(304): java.lang.RuntimeException: Unable to create service android.basic.lesson14.MusicService: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2969)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.access$3300(ActivityThread.java:125)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.os.Looper.loop(Looper.java:123)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at java.lang.reflect.Method.invoke(Method.java:521)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at dalvik.system.NativeStart.main(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): Caused by: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.basic.lesson14.MusicService.onCreate(MusicService.java:43)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2959)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): ... 10 more
解决方案 »
- 通过蓝牙录音
- 怎样在客户端的源码里找服务器的IP设置
- 开机直后“启动器(com.android.launcher2)无响应”,launcher挂了
- android哪个函数是获取当前app的安装目录的
- 关于两个canvas协同工作的使用
- 我这样的水平适合学android?求老师级点评。
- 有关布局的问题
- Android app能用socket直接连第三方服务器吗?
- 【android】这个动画效果如何实现呢?
- versionCode versionName minSdkVersion targetSdkVersion各有什么用?
- repo sync时的一个错误
- NexusOne这种触摸按键的在黑屏状态下能有相应吗?
增加创建是否成功的判断
if(mPlayer != null) {
mPlayer.setLooping(true);
}或者直接用new创建mPlayer
if (mPlayer== null) {
mPlayer= new MediaPlayer();
}
我试过注释这句mPlayer.setLooping(true);
也不行
mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu);
这句不是可以返回一个对象了吗?怎么会是空的呢?
<activity android:name=".MainHelloService"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <service android:enabled="true" android:name=".MusicService">
</service>
已经注册service
//定义点击监听器
OnClickListener ocl= new OnClickListener(){
public void onClick(View v) {
//显示指定intent所指的对象是个Service
Intent intent = new Intent(MainHelloService.this,android.basic.lesson14.MusicService.class);
switch(v.getId()){
case R.id.Button01:
//开始服务
startService(intent);
break;
case R.id.Button02:
//停止服务
stopService(intent);
break;
case R.id.Button03:
//绑定服务
bindService(intent,conn,Context.BIND_AUTO_CREATE);
break;
case R.id.Button04:
//解除绑定
unbindService(conn);
break;
}
}
};
我两种方法都有定义