用户不活动时是否可以“自动启动”应用程序?

时间:2019-09-13 09:16:10

标签: java android android-intent kotlin android-webview

我必须创建一个应用程序,该应用程序检测用户的不活动状态,然后启动活动以使用WebView显示一些视频,然后在完成WebView的显示后,必须播放SDCard中的视频。我已经使用WebView和SDCard处理了部分内容(使用JavaScriptInterface等) 此应用程序必须一直使用API​​ 19直到最新版本。

问题是-是否有可能检测用户是否处于非活动状态并启动我的应用程序,或保持应用程序在后台运行,然后在用户变得不活动一段时间后在前台启动活动?

当用户不看屏幕时,我不尝试播放广告。该应用程序是为我的客户准备的,他们的商店存储着各种电气设备,包括智能手机。目标是播放视频演示文稿,其中包含针对每个智能手机的硬件详细信息(有关处理器,内存,相机,屏幕等的信息)。

简而言之:我必须制作一个类似于三星创建的“演示应用”的应用(在屏幕上播放某种演示文稿)。

到目前为止,我已经阅读并测试了以下内容:

1)带有ACTION_SCREEN_OFF / ACTION_SCREEN_ON事件组合的BroadcastReceiver。

接收器工作正常,我可以检测到此事件,然后开始活动,但是...屏幕已经关闭,因此我看不到显示的活动-解锁手机后,它可以在前台运行。收到事件后,是否可以解锁手机?

到目前为止,这是我的代码。 EventReceiver类:

class EventReceiver: BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        StringBuilder().apply {
            append("Action: ${intent.action}\n")
            append("URI: ${intent.toUri(Intent.URI_INTENT_SCHEME)}\n")
            toString().also { log ->
                Log.d(TAG, log)
                Toast.makeText(context, log, Toast.LENGTH_LONG).show()
            }
        }

        if (intent.action == Intent.ACTION_SCREEN_OFF) {
            val i = Intent(context, MainActivity::class.java)
            context.startActivity(i)
        }
    }
}

MainActivity类:

val br : BroadcastReceiver = EventReceiver()
val filter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION).apply {
   addAction(Intent.ACTION_SCREEN_OFF)
   addAction(Intent.ACTION_SCREEN_ON)
   addAction(Intent.ACTION_BOOT_COMPLETED)
}

2)前台服务-我读到这是在后台制作一些非常规材料并向用户显示通知的好方法。有没有办法从中开始活动?

3)Job Scheduler

4)Daydream / Dream Service-实际上,它几乎适用于所有API和制造商,但是..无法将应用设置为Huawei / Honor智能手机上的屏幕保护程序,至少从电话设置来看,我已经读过可以通过ADB等实现。但这不是我可以在这里使用的选项。

似乎这些都不满足我的期望。

0 个答案:

没有答案