Android浮动小球与开机自启动(2)

@Override
    public void onDestroy()
    {
        // TODO Auto-generated method stub
        super.onDestroy();
        if(mFloatLayout != null)
        {
            mWindowManager.removeView(mFloatLayout);
        }
    }

}

  这里是利用ImageButton组件来实现小球,关键在于其显示的图片是圆形。

  因此,要想将浮动窗口实现为其他形状,只需制作相应的图片赋给组件。


  对于小球的功能,只是实现了在手机屏幕上随意拖动,单击消失三秒后重现。

  3、浮动小球有了,怎么让它启动呢?注意上面实现的类Service1,继承的是Service。

  在ManiActivity.java中,让其显现的方式很简单,代码如下:

finish();
Intent intent = new Intent(getApplicationContext(), Service1.class);
startService(intent);

  注意,这里对于MainActivity类不需要做任何处理,新建工程时默认就好。当然,要实现其他功能例外。

  代码finish();可加可不加,加上之后使得程序一运行就只剩下小球,原来的界面让其消失。

  效果图如下,图形找的是红色小火焰。

Android浮动小球与开机自启动

  4、到此,浮动小球就实现了,那怎么让它开机自启动呢?

  其实也很简单,用到了BroadcastReceiver。

  还是先添加权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

  另外,对于系统的广播消息,要想在开机等时刻能够捕获到,还需添加以下内容:

<receiver android:name=".BootBroadcastReceiver">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver>

  实现代码如下:

package com.XXX.autostart;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {

static final String ACTION = "android.intent.action.BOOT_COMPLETED";

@Override
    public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(ACTION)) {
            Intent intent1 = new Intent(context, Service1.class);
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startService(intent1);
        }
    }
}

  将手机ReBoot,可以发现红色小球会自行启动,不过速度比较慢(和360安全卫士相比)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ce1094637d1a8c4ef319a029edb7a334.html