- 投稿日:2021-01-14T20:43:05+09:00
【Android】MediaPlayerで音楽を再生する方法(備忘録)
プログラミング勉強日記
2021年1月14日
MediaPlayerを使って簡単に音楽する方法をまとめる。MediaPlayerの使い方
MediaPlayerで音楽を再生する方法は、音楽ファイルを再生する場合とURI・URLから再生する場合がある。
MediaPlayerで音楽ファイル使う場合、音楽ファイルは
res/assets
またはres/raw
に置く。
assetsはフォルダ分けをすることができる。そのため、音楽ファイルが複数ある場合はassetsに置く方がいい。rawはそのまま音楽ファイルを入れる。
それぞれのフォルダはこのようにして作成することができる。
音楽ファイルを再生する場合mp = MediaPlayer.create(this, R.raw.musicFile); // 音楽ファイルを読み込み mp.start(); // 再生開始URIから再生する場合Uri uri = ; MediaPlayer mp = MediaPlayer.create(context, uri); mp.start();URLから再生する場合String url = "http://........"; MediaPlayer mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.setDataSource(url); mp.prepare(); mp.start();
- 投稿日:2021-01-14T18:28:29+09:00
MaterialComponentのChipの背景色を透明にする方法
タイトルのとおりです。軽く詰まったので残します。
https://material.io/components/chips/android
↑のテキストを見ると、
app:chipBackgroundColor
というAttributeが存在するのがわかります。そこにtransparentを設定してみましょう。<style name="ChipStyle" parent="Widget.MaterialComponents.Chip.Action"> <item name="chipStrokeColor">?colorOnPrimary</item> <item name="android:textColor">?colorOnPrimary</item> <item name="chipBackgroundColor">@android:color/transparent</item> </style>こうなる。why。
https://github.com/material-components/material-components-android/issues/367
↑のIssueを発見。
別途、chipSurfaceColor
を設定する必要があるみたい。<style name="MatchedAffinityChip" parent="Widget.MaterialComponents.Chip.Action"> <item name="chipCornerRadius">32dp</item> <item name="chipStrokeWidth">1dp</item> <item name="chipStrokeColor">?colorOnPrimary</item> <item name="android:textColor">?colorOnPrimary</item> <item name="chipBackgroundColor">@android:color/transparent</item> <item name="chipSurfaceColor">@android:color/transparent</item> </style>こうなる。
よかったですね。
- 投稿日:2021-01-14T16:20:14+09:00
Android ViewBingdingでFlagmentを使用するときの定型文に使われる構文の解説
前書き
Android ViewBingdingでFlagmentを使用するときの次のような定型文が使われます。初心者の私には瞬間理解できなかったので、解説を残します。いくつかキーワードを残しますので、説明が不十分でしたら、それを頼りに調べなおしてください。
class TitleFragment : Fragment() { private var _binding: FragmentTitleBinding? = null private val binding get() = _binding!! // <---この行について解説 // 以下省略 }1.!!マーク
これは!! Operator(!!演算子)です。null許容型の変数_bindingに!!を付けることにより、_bindingを強制的に非null許容型に変換し、非null許容型の変数bindingに代入することを可能にしています。
(参考文献:野崎英一著「やさしいKotlin入門」)p219
(参考ページ:The !! Operator)2. get()
これは、クラスプロパティのアクセッサのゲッターです。
次の構文と同じ意味です。private val binding: FragmentTitleBinding get() { return _binding!! }(参考文献:野崎英一著「やさしいKotlin入門」)p166 コード24.7
後書き
参考になりましたか?
なおこの問題は、金田著「はじめてのAndroidプログラミング “第5版”を写経しているときに気が付きました。また、同様の構文は、Android デベロッパードキュメントガイドビュー バインディングにも記述があります。
- 投稿日:2021-01-14T15:31:38+09:00
【Android】タップで切り替えを行わないSiwtchボタンの作成
Switchボタンは通常タップもしくはフリックでON/OFFを切り替えを行う。
フリックのみでの切り替えを行いたい場合は以下を使用。SwitchOnlyFlick.ktclass SwitchOnlyFlick : SwitchCompat { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet) : super(context, attrs) constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) override fun toggle() {} }toggle関数で何も行わないようにすれば、タップによるON/OFF切り替えは行われない。
- 投稿日:2021-01-14T12:11:54+09:00
これからアンドロイドプログラミングを始める方へ
AndroidStudio4.1からAndroid Kotlin Extensions Gradle プラグインが使えなくなったようです。
<参考>Kotlin Android Extensions の未来端的にいうと、次のようなtextView.textやfindViewById<>().textを使うコードが使えなくなります。
kotlin.ktradioGroup1.setOnCheckedChangeListener { group, checkedId -> if (group == radioGroup1) { textView.text = findViewById<RadioButton>(checkedId).text } }この問題は、これからアンドロイドプログラミングを勉強し始める方へ始める方にとっては、大きな問題でしょう。この記事はそういった方へのアドバイスです。
もしあなたが教科書を探しているなら、2021年1月14日現在でのお勧めは、金田著「はじめてのAndroidプログラミング “第5版”です。
本書は、ViewBindingの問題を解決していますし、ViewBinding上でのradioButtonの使い方も記述されています。2021年1月14日現在、ネット上にはViewBinding上でのradioButtonの使い方の解説は見つかりませんでした。
また本書第4版でそのまま写経した際に発生していた「‘PrefernceManager’ is deprecated(非推奨)」についても、改善されて、AndroidX化されていますので、安心しえ勉強できます。詳しくは、AndroidXライブラリの使い方ください。
現在、販売されているその他の入門教科書で勉強しやすいものはいくつかありますが、それらの本を使って勉強し始めて、その本に不信感を覚える前に、まずこの本(第5版)で勉強を始め、第4版と比較し、コードの違いを勉強した上で、他の入門書に移ることをお勧めします。私個人的には、「基礎&応用力をしっかり育成!Androidアプリ開発の教科書 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)」や「はじめてのAndroidアプリ開発 第3版 AndroidStudio3対応(Java版)」が好きなので、早くViewBingdingに対応することを希望します。