こんにちは、スィンです。
以下は、Androidアプリの画面をスリープさせない方法です。
ソースコードで FLAG_KEEP_SCREEN_ON を使う方法
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } ... }
layout.xml に android:keepScreenOn=”true” 属性を追加するやり方
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
動画再生中はスリープを無効にし、動画終了時にスリープを再有効化にする方法
Google/ExoPlayer を使った「ツイッターのTweecha v72.8」でのやり方です。
動画を見ながら寝落ちしてしまうことも考えて、動作再生終了時にはスリープが有効になるように配慮します。
動画再生開始時だけでなくシークバーを動かした時も、STATE が必ず一度 BUFFERING になりますので STATE_BUFFERING でスリープを無効にしています。
class VideoPlayerActivity : AppCompatActivity() { fun playVideo(url: String) { val bandwidthMeter = DefaultBandwidthMeter() val videoTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandwidthMeter) val trackSelector = DefaultTrackSelector(videoTrackSelectionFactory) val player = ExoPlayerFactory.newSimpleInstance(this, trackSelector) val dataSourceFactory = DefaultDataSourceFactory(this, "sinProject video player") val extractorsFactory = DefaultExtractorsFactory() val mediaSource = ExtractorMediaSource(Uri.parse(url), dataSourceFactory, extractorsFactory, null, null) player.playWhenReady = true simple_exo_player_view.player = player player.prepare(mediaSource) player.addListener(object: Player.EventListener { override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) { when (playbackState) { Player.STATE_ENDED -> window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) Player.STATE_BUFFERING -> window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } } ... }) } }
参考
ありがとうございます!
「いいね」よろしくお願いします!(下のいいねボタンをタップ)
Twitterもやってます。@iam_o_sin フォローよろしくお願いします!
弊社では、「さらに高みを目指したいエンジニア」を育てる環境を用意しています。
株式会社 #sinProject CEO/CTO
Twitterアプリ1位 #Tweecha2 企画制作
サービス・システム設計開発、コンサルタント
#sinPro式学習 #Svelte #TypeScript #Flutter #Dart #Java #HTML #CSS
#kimurakan ピアノ弾き語り