Java 应用程序可以';不要在安卓2.3上启动

Java 应用程序可以';不要在安卓2.3上启动,java,android,logcat,Java,Android,Logcat,我的应用程序不想在安卓2.3上启动,尽管我的最低版本是2.2,这里是日志。我在emulator和2.3 Android设备上进行了测试,它根本不运行,但在我的另一台4.0设备上运行很好。。。有什么不对劲吗 04-16 13:18:40.982: D/dalvikvm(6191): GC_CONCURRENT freed 41K, 49% free 2761K/5379K, external 3443K/4300K, paused 3ms+42ms 04-16 13:18:41.652: D/da

我的应用程序不想在安卓2.3上启动,尽管我的最低版本是2.2,这里是日志。我在emulator和2.3 Android设备上进行了测试,它根本不运行,但在我的另一台4.0设备上运行很好。。。有什么不对劲吗

04-16 13:18:40.982: D/dalvikvm(6191): GC_CONCURRENT freed 41K, 49% free 2761K/5379K, external 3443K/4300K, paused 3ms+42ms
04-16 13:18:41.652: D/dalvikvm(6191): GC_CONCURRENT freed 1K, 49% free 2761K/5379K, external 4643K/4643K, paused 2ms+10ms
04-16 13:18:41.942: D/AndroidRuntime(6191): Shutting down VM
04-16 13:18:41.942: W/dalvikvm(6191): threadid=1: thread exiting with uncaught exception (group=0x2aac8578)
04-16 13:18:41.952: E/AndroidRuntime(6191): FATAL EXCEPTION: main
04-16 13:18:41.952: E/AndroidRuntime(6191): java.lang.RuntimeException: Unable to resume activity {spec.sartheris.myapp/spec.sartheris.myapp.MainActivity}: java.lang.NullPointerException
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2141)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2156)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.access$1500(ActivityThread.java:121)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.os.Looper.loop(Looper.java:130)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.main(ActivityThread.java:3701)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at java.lang.reflect.Method.invokeNative(Native Method)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at java.lang.reflect.Method.invoke(Method.java:507)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at dalvik.system.NativeStart.main(Native Method)
04-16 13:18:41.952: E/AndroidRuntime(6191): Caused by: java.lang.NullPointerException
04-16 13:18:41.952: E/AndroidRuntime(6191):     at spec.sartheris.myapp.MainActivity.onResume(MainActivity.java:47)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.Activity.performResume(Activity.java:3832)
04-16 13:18:41.952: E/AndroidRuntime(6191):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2131)
04-16 13:18:41.952: E/AndroidRuntime(6191):     ... 12 more
04-16 13:18:42.002: D/dalvikvm(6191): GC_CONCURRENT freed 54K, 49% free 2775K/5379K, external 2543K/5243K, paused 2ms+13ms
以下是MainActivity中的代码

public class MainActivity extends Activity {
    MediaPlayer music;
    int length;
    ImageView img;
    AnimationDrawable animation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        music = MediaPlayer.create(getApplicationContext(), R.raw.mymusic);
        music.setLooping(true);
        music.start();
        img = (ImageView) findViewById(R.id.imageView1);
        img.setBackgroundResource(R.drawable.myanim);
        animation = (AnimationDrawable) img.getDrawable();
        animation.start();
    }

    @Override
    protected void onPause() {
        super.onPause();
        music.pause();
        length = music.getCurrentPosition();
    }

    @Override
    protected void onResume() {
        super.onResume();
        music.seekTo(length);
        music.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.options, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.about:
            Intent ia = new Intent("spec.sartheris.myapp.ABOUTUS");
            startActivity(ia);
            break;
        case R.id.exit:
            finish();
            break;
        }
        return false;
    }
}

音乐
未初始化。在
onCreate()
中初始化它,因为
onResume()
onCreate()
之后运行
onResume()
将此行移动到
onCreate()
下:

或者,您可以将其添加到
onCreate()
中:

MediaPlayer music = new MediaPlayer();
然后在
onWindowFocusChanged()
中按以下方式添加音乐文件:

music.setDataSource("PathToFile");

出于某种原因,.aac文件没有在姜饼上播放,这就是发生错误的原因,将其替换为正常的.mp3文件,现在可以正常工作了,奇怪…

您的错误在这里检查MainActivity.java:spec.sartheris.myapp.MainActivity.onResume(MainActivity.java:47)中的第47行将MainActivity代码放在这里……MainActivity.java的第47行有一个NullPointerException。请检查变量长度是否也未初始化,因为android活动生命周期为:onCreate()->onStart()->onResume()。您使用的是length变量,在本例中为null。在您的代码中,您应该将length初始化为0或类似的值。不,同样的事情,int length=0,没有什么不同的情况。我如何初始化它,MediaPlay没有这样的方法您已经在onWindowFocusChanged()中初始化了它。因此,只需将代码移到onCreate()@SartherisStormhammer即可通过调用其构造函数或返回类实例的方法初始化变量(如在onWindowFocusChanged()中所做的操作:music=MediaPlayer.create(getApplicationContext(),R.raw.mymusic);必须在使用变量的方法之前初始化该变量(就像你在onResume()中所做的一样,仍然没有什么,甚至在onCreate之前就初始化了MediaPlayer,在它的onResume中,在LogCat中,它说“无法创建媒体播放器”
music.setDataSource("PathToFile");