ContentResolver
を使用して、次のようなコードで監視できます。
yamataka3 さんの言われるように、 BroadcastReceiver
で通知を受けることもできるようですね。
csharp
1using Android.App;
2using Android.Widget;
3using Android.OS;
4using Android.Content;
5
6namespace VolumeSample
7{
8 [Activity(Label = "VolumeSample", MainLauncher = true, Icon = "@mipmap/icon")]
9 public class MainActivity : Activity
10 {
11 protected override void OnCreate(Bundle savedInstanceState)
12 {
13 base.OnCreate(savedInstanceState);
14
15 // Set our view from the "main" layout resource
16 SetContentView(Resource.Layout.Main);
17
18 this.ApplicationContext.ContentResolver.RegisterContentObserver(
19 Android.Provider.Settings.System.ContentUri, true,
20 new VolumeObserver(this, new Handler()));
21 }
22 }
23
24 internal class VolumeObserver : Android.Database.ContentObserver
25 {
26 private readonly Context context;
27
28 public VolumeObserver(Context context, Handler handler) : base(handler)
29 {
30 this.context = context;
31 }
32
33 public override void OnChange(bool selfChange)
34 {
35 base.OnChange(selfChange);
36
37 var audioManager = (Android.Media.AudioManager)context.GetSystemService(Context.AudioService);
38 var volume = audioManager.GetStreamVolume(Android.Media.Stream.System);
39 Toast.MakeText(context,
40 $"Current System Vol: {volume}",
41 ToastLength.Short).Show();
42 }
43 }
44}
Xamarin.Android でのプログラミングは Java or Kotlin での Android プログラミングとほとんど変わらないので、通常の Android アプリ開発の情報を検索してみるとよいでしょう。今回も、「android volume change listener」でWeb検索すると見つかる情報を参考にしました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/14 05:08