質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

1回答

1778閲覧

BroadcastReceiverで指定時間にアプリの起動をしたい

kakashi55

総合スコア25

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2021/10/16 23:52

android studioでkotlinにてアプリを作ってます。

〇やりたいこと
AlarmManagerで指定した時間に、BroadcastReceiverにて処理をしたいです。

〇課題
BroadcastReceiverの処理は、アプリ起動して、アプリを開いているときには問題なく動作し、
soundManagerにてサウンドを際するが、下記状態において動作しません。

1.アプリがバックグラウンド待機状態
2.アプリが立ち上がってない状態

どのような記述にすればよいのか、
お分かりになる方がいらっしゃいましたらご教授いただけないでしょうか。

MainActivity

1 2class MainActivity { 3 private lateinit var binding: ActivityMainBinding 4 5 private val myReceiver = object: BroadcastReceiver() { 6 override fun onReceive(context: Context?, intent: Intent?) { 7 Log.d("debug", "戻ってきた") 8 soundManager.play() //サウンド再生 9 } 10 } 11 12 override fun onPause() { 13 super.onPause() 14 } 15 16 override fun onCreate(savedInstanceState: Bundle?) { 17 super.onCreate(savedInstanceState) 18 binding = ActivityMainBinding.inflate(layoutInflater) 19 setContentView(binding.root) 20 21 soundManager = SoundManager.getInstance(this) 22 23 LocalBroadcastManager.getInstance(this).registerReceiver( 24 myReceiver, 25 IntentFilter("test.app.actions.SERVICE_FINISHED") 26 ) 27 startService(Intent(this, MyReceiver::class.java)) 28 } 29} 30 31

MyReceiver

1 2class MyReceiver: BroadcastReceiver() { 3 4 override fun onReceive(context: Context?, intent: Intent?) { 5 Log.d("debug", "MyReceiver") 6 7 if (context != null) { 8 Log.d("debug", "MyReceiver Inside") 9 MyNotification.sendNotification(context) 10 11 LocalBroadcastManager.getInstance(context).sendBroadcast( 12 Intent("test.app.actions.SERVICE_FINISHED") 13 ) 14 } 15 } 16}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

BroadcastReceiverで処理を始める前に、そのアプリが起動中かどうかを調べて、
Case1: 起動中(フォアグラウンド)であれば、そのまま処理を進める。
Case2: 待機中(バックグラウンド)であれば、一旦アプリを停止した後に再起動して、処理を進める。
Case3: 未起動であれば、アプリを起動した後に、処理を進める。

というような感じで対処しては如何ですか?

投稿2021/10/17 00:35

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakashi55

2021/10/17 00:41

ご回答いただきありがとうございます。 小生初心者なため具体的に教えていただきたいのですが、 1.アプリが起動中か調べる方法 2.アプリ起動させて処理を行う方法(Case3) についてご教授いただけないでしょうか。 自分でも調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問