android------锁屏(手机启动出现锁屏界面)

以前用过一个红包锁屏的软件,第一次打开手机出现锁屏,滑动领取收益,当时觉得这功能不错,就查阅资料,写了一个案例,

apk运行流程: 进入软件---》启动服务---》关闭手机(可先退出应用)--》再打开手机即可看见锁屏界面

效果图:

当然这个案例还是有缺点的,没考虑性能问题。

界面是可以随意修改的,滑动的是一个自定义控件。

服务类

public class AppService extends Service {

    private AppReceiver mLockScreenReceiver;

    private IntentFilter mIntentFilter = new IntentFilter();
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 监听屏幕关闭和打开的广播必须动态注册
        mIntentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
        mIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
        mIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
        mIntentFilter.addAction(Intent.ACTION_TIME_TICK);
        // 设置广播的优先级
        mIntentFilter.setPriority(Integer.MAX_VALUE);
        if (null == mLockScreenReceiver) {
            mLockScreenReceiver = new AppReceiver();
            mIntentFilter.setPriority(Integer.MAX_VALUE);
            registerReceiver(mLockScreenReceiver, mIntentFilter);
            Toast.makeText(getApplicationContext(), "AppService", Toast.LENGTH_LONG).show();

        }
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setTicker("APP正在运行");
        builder.setAutoCancel(false);
        builder.setContentTitle("APP正在运行");
        builder.setContentText("您的收益正在累积");
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, LockScreenActivity.class), PendingIntent.FLAG_UPDATE_CURRENT));
        Notification n = builder.build();
        // 通知栏显示系统图标
        startForeground(0x111, n);

        Parser.killBackgroundProcess(this);
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        if (mLockScreenReceiver != null) {
            unregisterReceiver(mLockScreenReceiver);
            mLockScreenReceiver = null;
        }
        super.onDestroy();
        // 重启服务
        startService(new Intent(this, AppService.class));

    }

}

源码有点多就不一一贴出来了,直接下载源码即可。

有兴趣的小伙伴可以参考,一起研究。

源码点击下载:https://github.com/DickyQie/android-system

原文地址:https://www.cnblogs.com/zhangqie/p/8431566.html

时间: 2024-10-03 13:34:19

android------锁屏(手机启动出现锁屏界面)的相关文章

Android从一个应用启动另一个主界面隐藏图标的应用

用a.apk启动b.apk,并且b的图标是在手机主界面上看不到的. 一.新建a,b两个android项目(新建helloworld项目相似),在a项目中增加点击事件(启动按钮来启动b应用).      二.在b应用中修改b manifest.xml中<intent-filter>...</intent-filter>的内容就可以隐藏b应用的图标了. <?xml version="1.0" encoding="utf-8"?> &l

【Android】去除应用启动时黑屏现象

http://www.eoeandroid.com/blog-1169143-47979.html 在AndroidManifest里面定义的时候,在启动的Activity,添加android:theme="@android:style/Theme.Translucent",就不会出现黑屏现象了

在 Android 和 iOS 手机上模拟触屏点击的区别

通过与 App 通讯(Android 或 iOS)来控制 App 界面响应用户的操作: 1 Android 手机: 在 Activity 中使用 MotionEvent 来模拟点击操作.2 IOS 手机: 点击发送的 Touch 或者 Move事件(在 Android 手机上不用区分),都是经过 App 内部识别以后,在当前的界面上进行处理,处理的流程就是在当前界面遍历控件,然后手动调用当前控件所执行的函数. 如果发送的数据中包含移动事件,App 端会处理识别为滑动事件,不会触发点击事件的响应.

android应用程序第一次启动时显示引导界面

市面上好多优秀的应用(举例新浪微博.UC浏览器)都采用了欢迎页面与使用向导的方式给用户带来了良好的用户体验. 一般来说用户第一次安装应用或者安装了新版本后第一次进入应用都会显示成 欢迎页面-使用向导-主界面 的方式 用户没有安装新版本或者不是第一次进入的时候都会显示成 欢迎页面-主界面的方式 想要实现这种不同的分支,我们就要使用一种变量来存储我们是否是第一次进入应用,当然这种变量不可能是存储在应用里,而是要存储在应用包名底下的文件中 那么我们就来看看实现这种变量存储和修改的步骤吧 1.在应用的欢

【Android】如何实现Android程序在手机锁屏后继续运行

最近笔者在做一个功能,就是实现Android程序在锁屏后可以继续运行,笔者在网上查了一些资料,现在整理出来,希望能够对你有所帮助. 1.如何监听屏幕锁屏 监听屏幕锁屏可以通过如下方式来实现,直接通过代码来判定,或通过监听器来实现 1)通过代码来判定屏幕的锁屏状态 可以通过PowerManager的isScreenOn方法,代码如下: PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

android手机横屏和竖屏与android:configChanges

原文地址:http://woshixy.blog.51cto.com/5637578/1081913 目前大多数手机都支持重力感应随之而来的就是屏幕方向改变的问题.对应普通开发者来说屏幕的随意改变也会带来困扰.在Google自带的doc里可以看到,如果设备的配置(Resources.Configuration中进行了定义)发生改变,那么所有用户界面上的东西都需要进行更新以适应新的配置.因为Activity是与用户交互的最主要的机制,它包含了处理配置改变的专门支持.除非你特殊指定,否则当配置发生改

Xamarin.Android splash页面瞬间响应_避免APP启动闪白屏

Application和Activity中的onCreate都进行了优化,基本没有耗时操作,但是启动应用之后还是会闪现一下白色背景,然后才进入Splash页面,对比了一下QQ.微信.微博等客户端,点击之后都是瞬间响应Splash启动页,差别在哪里呢. 其实就算你onCreate啥都不做,仍然会闪一下白屏,因为初始化解析界面时需要一定时间,解决方法是自定义Theme. 自定义如下 <style name="AppSplash" parent="android:Theme&

Delphi XE5 for Android 启动无黑屏等待总结

Delphi XE5 for Android 启动无黑屏等待总结  从embarcadero官方技术论坛找了下参考资料,对黑屏处理应该来说有了相应的办法,并且这种办法具有很好的应用价值,因此做了个总结,Delphi XE5 无黑屏从本质上讲是使用Android 原生开发语言java ,编写的程序启动时首先加载java编写的SplashScreen的activity,然后在splashScreenActivity中启动delphi FireMonkey中的com.embarcadero.firem

Android启动页黑屏的解决方案

一般APP启动都会显示一个白屏或者黑屏的页面,再跳到欢迎页,这样子的体验效果不好.这到底是怎么回事呢?要如何解决它呢?今天我们来分析下它产生的原因,以及解决方案. 1.产生原因 当系统启动一个APP时,zygote进程首先会创建一个进程去执行这个APP,但是创建进程是需要时间的,用户点击后以为没响应会再次点击,这样的体验效果不佳.为了解决这种迷之尴尬,Android系统会根据你的manifest中设置的主体颜色来显示一个白屏或者黑屏,它的正式称呼是Preview window,即预览窗口. 2.