- 1. MediaPlayerを使用してURLから音声を再生する方法
- 2. TextView内の設定でImageを設定する方法
- 3. 【Kotlin】YoutubeAPIで動画再生機能をAndroidアプリ内に実装する
- 4. includeしたレイアウトに対してConstraintLayoutの制約を適応する方法
- 5. 個人アプリをJetpackComposeでリプレースしたときの作業まとめ
- 6. 【第一回】UnityでAndroidゲームアプリを作る ~プロジェクト作成と素材集め~
- 7. iOSのNSTimeZoneのUTCってnameがGMTなんだ..
- 8. UnityでAndroidアプリをリリースする下準備
- 9. [Flutter/Android]「uses-sdk:minSdkVersion XX cannot be smaller than version YY declared in library」のエラー解消
- 10. Kotlinのyield関数についてまとめてみる
- 11. 【Android】Navigationでデータ受け渡しを伴う画面遷移をする方法
- 12. Unity+Android+OAuth認証の実装方法の紹介
- 13. Firebase Analytics実装方法
- 14. [Android]Androidでテストフィクスチャを使う
- 15. [iOS/Android]FirebaseAuthの電話番号認証(SMS)にてボット判定(reCAPTCHA 検証)をなくす方法
- 16. 2022年のiOS/Androidの技術をざっくりキャッチアップ
- 17. 【Flutter】api通信がAndroidでのみうまくいかない件
- 18. Nature Remo Cloud API + Lambdaで温度を記録して折れ線グラフを表示する自分ち専用のAndroidアプリを作った
- 19. ネイティブアプリの初回審査通過に向けて気をつけたポイント(2022年2月版)
- 20. 【AndroidStudio】xmlにあるandroidとかtoolsとかappの違いって何?
MediaPlayerを使用してURLから音声を再生する方法
# はじめに
最近音声を再生する機会が多く、都度調べている気がしますので、簡単にまとめておこうと思います。# 再生方法
まず、メンバ変数としてMediaPlayerを初期化しておきます。“`
private val mediaPlayer = MediaPlayer()
“`次に、MediaPlayerに再生したいURLと再生に伴う設定を行います。
“`
setDataSource(url)
setAudioAttributes(
AudioAttributes
.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build()
)
“`
上記で再生する為の設定は完了です。
簡単に呼び出している関数を解説します。“`
setDataSource
“`
この関数に再生したいURLを設定します、他にもAssetFileDescriptorやMediaDat
TextView内の設定でImageを設定する方法
TextViewとImageViewを分けていましたが、TextView内にImageViewを設定し、コードを簡潔にすることができます!
早速コードで説明していきます!“`
【Kotlin】YoutubeAPIで動画再生機能をAndroidアプリ内に実装する
次作るアプリでYoutube再生機能を入れたいなあと思っているので、とりあえずYoutubeが再生できるようになるまでのメモ。
## 準備
– Google Cloud Platformでプロジェクトを作成する
– Youtube Data API v3を有効にし、APIキーを取得する
– [公式のページ](https://developers.google.com/youtube/android/player/downloads/)からライブラリをダウンロードして、libsフォルダ内のYouTubeAndroidPlayerApi.jarを自分のプロジェクトにインポートする(AndroidStudio上でlibsにペースト後、右クリックでAdd As Libraryを選択)
– Android Manifestでインターネット通信を許可する“`xml
“`– AndroidXで作るので、[こちら](https://qiita.com/i
includeしたレイアウトに対してConstraintLayoutの制約を適応する方法
今回は知らない方がいたので、ConstraintLayoutを使用している時に共通のレイアウトなどをincludeして表示する際にConstraintLayoutの制約を適応する方法を残しておこうと思います。
# includeしたレイアウトに対してConstraintLayoutの制約の適応方法
“`
個人アプリをJetpackComposeでリプレースしたときの作業まとめ
こんにちは、tkyです。
個人で作成しているアプリをJetpackComposeで書き直したものを先日リリースしました。
どんなことを考えて実際に移行したのか記録として残しておこうと思います。対戦ゲームの勝敗記録アプリ
みんな使ってね!https://play.google.com/store/apps/details?id=io.github.ticktakclock.worl
■できること
・勝/負 の戦績を記録する
・勝敗にメモを残す
・戦績をゲームタイトルやイベント毎に記録する
・日、週、月ごとの対戦数と勝率をグラフで確認する
・過去にさかのぼって戦績を記録する
・記録した戦績の勝敗を編集する## 画面構成
全部で4つの画面を持つ小規模なアプリです。
– ゲーム一覧画面
– 戦績記録画面
– 分析画面(グラフのライブラリに依存するためリプレースはしませんでした)
– 設定画面戦績をグラフで表示する分析画面はグラフ表示ライブラリに大きく依存するためリプレースはしませんでした。
## 元のアプリの構成
Single Activityの4 Frag
【第一回】UnityでAndroidゲームアプリを作る ~プロジェクト作成と素材集め~
# 本連載について
– 本連載では、私が趣味で個人開発しているAndroidゲームの作成過程を記録していこうと思っています。
– 作るゲームは2Dの横スクロールアクションにしていこうと思っています。# 本記事について
本記事では以下の内容を記載します。
1. Unityプロジェクトの準備
1. 使用する素材集め# Unityプロジェクトの準備
1. Unity hubを開きます。私は[Unity Hub 3.0.1](https://unity3d.com/jp/get-unity/download)を使用しています。
1. Unity Hubを開いたら、「New project」をクリック。
1. 2Dを選択して、右下のProject Settingsに必要事項を入力して、Create Projectをクリック。
1. プロジェクトが開いた
iOSのNSTimeZoneのUTCってnameがGMTなんだ..

AndroidとiOSでTimeZoneのUTCにまつわる調査をしていたところ想定外の結果になったので書き残しておきます。誰か真相を知っていたら教えて下さい。
# GMTとUTCの違い
GMTとUTCの違いをググるとCITIZENの用語集とよくある質問リストが最初に出てくるhttps://citizen.jp/faq/detail/id1363
>両者は、目的も概念も算出方法もまったく異なりますが、日常生活に不都合のない精度の時間測定(整数の秒)であれば、ほぼ差がないと考えて問題ありません。
そう、ほぼ一緒と考えてよいということ。日本のAsia/Tokyo(+9:00)より9時間前のタイムゾーンということだ。
# Android(Kotlin)の場合
“`kotlin
import java.util.TimeZonef
UnityでAndroidアプリをリリースする下準備
# 本記事のゴール?
– UnityでGoogle Play StoreにリリースできるAndroidアプリビルド環境設定を行うことです。# 環境
– Unity 2020.3.27f1を使用しました。# 環境準備に参考にした資料
1. https://learn.unity.com/tutorial/publishing-for-android#
1. 上記のUnity Learnの”Publishing for Android”という記事に従い、Unity用のAndroid設定を行いました。上記ページで使用されているUnityのバージョンが、私が使用しているUnity 2020.3.27f1よりも少々古かったので、所々UIが違いましたが(特にUnityHub)、似たような項目を探して何とかなりました。## Unity Learnに従って準備→Google Play Store申請時に嵌ったこと
1. Google Play Storeにリリースする際に.aabファイルが必要なので、以下のように”Build App Bundle (Google Play)”のチェ
[Flutter/Android]「uses-sdk:minSdkVersion XX cannot be smaller than version YY declared in library」のエラー解消
# 環境
Windows 10 Home
Flutter 2.10.2
Dart 2.16.1
Android Studio 4.0.1# エラー内容
Androidのエミュレータにてビルド時に下記のエラーが発生。>uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library
「SDKのバージョン19以上じゃないとだめなので(今は16)、`minSdkVersion`を上げてね」ということでした。
# 解決方法
`android/app/build.gradle`の`defalutConfig`の中に、`minSdkVersion`を指定できるのでそこを変更しましょう。“`gradle:android/app/build.gradle|変更前
defaultConfig {
// …略
minSdkVersion 16
// …略
}
“`“`gradle:android/app/build.
Kotlinのyield関数についてまとめてみる
今まで、KotlinのCoroutineを書いている中での時々登場する、“yield“がなにをやっているのかいまい理解せずになんとなくで、書いていたので“yield“について調べてみました。
:::note info
Sequenceで使う“yield()“もありますが、今回はCoroutineの“yield“についてです
:::# yield関数とは?
“yield“関数は、KotlinのCoroutineのsuspend関数です。# yieldを使うとどうなるのか?
“yield“を使うと、例えば複数のCoroutineを同時に実行しているときに、どれか一つが時間のかかる重い処理だった場合に、他のCoroutineに対して実行を譲ることができる関数です。::: note warn
(コメントで指摘いただきありがとうございます。)
複数のスレッドを持っている場合、スレッドを譲った前と後でスレッドが異なっている場合があるので、そこを注意する必要があります。
:::コードで書くとこんな感じです。
“`Kotlin
fun main() {
【Android】Navigationでデータ受け渡しを伴う画面遷移をする方法
# はじめに
皆さん、ごきげんよう!れぶです!
今回の記事では、Android Jetpack系の[Navigation](https://developer.android.com/guide/navigation?hl=ja)を使って、データの受け渡しをしつつ、Fragment間の画面を遷移させる手順を書いていきます。
自身が実装をする上で[公式ドキュメント](https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja)を参照したのですが、個人的に少し理解に苦しんだ箇所がありました。なので、注意すべきことも含めて詳細にまとめていこうと思います。
それでは、参りましょう!!
# この記事の対象者
* Navigationで、画面間のデータ受け渡しを伴う遷移を実現したい方
* Navigationを使った画面遷移の処理は分かるけど、画面間のデータ受け渡しの処理に苦戦している方
* 画面間のデータ受け渡しの処理の手順を知りたい方ただし、[公式ドキュメント](https://develo
Unity+Android+OAuth認証の実装方法の紹介
# 1. 前置き
AndroidでOAuthを実装するにあたり、専用ライブラリを使うことが最も簡単な方法です。しかし、当たり前ですが、Android向けのライブラリなので、Unityでは使えません。本稿はUnityでAndroid向けのOAuthを実装する手順を紹介するものです。また、例として、GoogleのOAuthを取り上げます。# 2. 流れの概要
AndroidでGoogleのOAuthを使用する流れは次の通りです。
1. Custom Tabsを開く
2. Googleの認証画面を表示する
3. Google認証のリダイレクトを受け取る
4. リダイレクトで得られたトークンを使い、ユーザー情報を取得する下記のリソースを使えば、実装がより簡単になります。
## 2.1. リソースの紹介
### 2.1.1. IdentityModel.OidcClient
IdentityModel.OidcClientはC#向けのOpenID Connect認定済みのOAuth SDKです。netstandard14、デスクトップ.NET、UWP、.NET Core、Xamar
Firebase Analytics実装方法
# 初めに
今回は、楽にAnalyticsでlogEventを実装できる様にするやり方を備忘録として書いていこうと思います### 実装方法
まず、イベントを渡す用のクラスを作成します
“`kotlin:
abstract class TrackingEvent(
val key: String,
val parameters: Map= emptyMap(),
)
“`次に、logEventを実装するためのInterfaceと本実装用のクラスを実装します
“`kotlin:
class TrackingService @Inject constructor(
private val firebaseAnalytics: FirebaseAnalytics
) : TrackingServiceInterface {
override fun track(trackingEvent: TrackingEvent) {
firebaseAnalytics.logEvent(
[Android]Androidでテストフィクスチャを使う
Android Gradle Plugin 7.1.0 からテストフィクスチャがサポートされたようなので試してみました。
https://developer.android.com/studio/preview/features#test-fixtures
テストフィクスチャはテストに必要な前提条件などを設定したりするためのものです。この機能を使うことによって、テストに必要なオブジェクトの定義やユーティリティメソッドなどを提供することができ、それらを Gradle の各モジュールのテストコードで参照することが可能になります。
今回試したプロジェクトは [こちら](https://github.com/watabee/TestFixturesSample) にアップしています。
# ライブラリモジュールでのテストフィクスチャの設定
Android ライブラリの Gradle モジュールでテストフィクスチャを提供する方法を見ていきます。ここではこのライブラリモジュールを仮に `data` モジュールとします。まずはこの `data` モジュールの `build.gradle` で
[iOS/Android]FirebaseAuthの電話番号認証(SMS)にてボット判定(reCAPTCHA 検証)をなくす方法
# 概要
この記事ではFirebaseAuthの電話番号認証(SMS)にてボット判定(reCAPTCHA 検証)をなくす方法についてご紹介します。
今回iOS,Androidそれぞれボット判定を消す事が出来たのでそれぞれ解説します!# そもそもボット判定とは?
以下のような画面を指します。まずこのような画面が表示されたあとに
このような画面が出る場合があります。
これをユーザにサインアップ、ログインしてもらう度に実施して
2022年のiOS/Androidの技術をざっくりキャッチアップ
ネイティブアプリにも宣言型UIとかなんかいろいろ入ってきたので、「いい加減そろそろ覚えないとな~~」ってなってる人は少なくないと思ってるんですけれど、一足先に一通り触ったのでどんな感じで学べばいいのかなという参考になればという感じの記事です。
# 宣言型UI
WebにjQueryがもたらされたとき、だれでも簡単に直接DOMを触ってViewを弄れるようになった結果、アプリの大規模化・保守の長期化に伴って手に負えなくなったので、それを解決するためにReact辺りが宣言型UIの思想を生み出した…というざっくりした認識を持ってるんですけれど、合ってるかは知りません。
とまれ、ネイティブアプリにも数周遅れではありますが宣言型UIの流れがきています。
## SwiftUI
SwiftUIの現在の最新バージョンは3です。
どんどん便利になるのはいいことなんですけれど、サポートするiOSのバージョン指定によっては使えない機能とかがあります…。
これは公式のコードなのですけれど、
“`swift
struct Content: View {
@State var model =
【Flutter】api通信がAndroidでのみうまくいかない件
# 何があったのか?
GitHubApiを使用した通信処理がAndroidでのみ失敗して詰まったので、備忘録を残しておく。# 解決法
#### AndroidManifest.xmlにネットワーク権限を追加
以下のようにandroid / src / main /AndroidManifest.xmlに\の記述を加えるとネットワーク権限が加えられ、api通信もできるようになります。 “`
…
“`# 参考
https://stackoverflow.com/questions/64120563/flutter-android-http-get-never-returns-in-release-mode
Nature Remo Cloud API + Lambdaで温度を記録して折れ線グラフを表示する自分ち専用のAndroidアプリを作った
Nature Remo Cloud API + Lambdaで温度を記録して折れ線グラフを表示する自分ち専用のAndroidアプリを作りました。
# 経緯– 我が家ではNature Remoというスマートリモコンを使っており、Alexaやスマホアプリ経由でいろんな家電を操作できるようにしている
– そのNature Remoでは[Nature Remo Cloud API](https://swagger.nature.global/)というものが提供されており、HTTPで簡単に情報が取れるらしい
– 最近エアコン暖房がついててもたいしてあったかくない気がする
– Nature Remoに搭載されている温度センサーの値と、エアコンの稼働状況をAPIから定期的に取得し、保存して見える化すればエアコンが本当に調子が悪いのかわかるのでは?
– 単純に室温の変化が見えたら面白そう
– [気象庁ホームページのリニューアルでアメダスのデータも簡単に取れるようになったらしい](https://mindtech.jp/?p=1754)のでついでに外気温も取得してみよう# つくった
ネイティブアプリの初回審査通過に向けて気をつけたポイント(2022年2月版)
# 0. 概要
この度、**新規の**ネイティブアプリをiOS/Androidの両プラットフォームにて**スケジュール通り**にリリース可能な(Apple/Googleによる審査が通過した)状態にすることができました!
※審査時間がとても早かった(通常、初回は2週間ほどを見るのが良いと言われていますが、提出から通過までなんと1営業日…!)というラッキーはありましたが、間違いなく開発チームの努力の成果だと思っています!
チームの中でも私個人は今回、技術的な側面ではなく、アプリが審査基準を満たせているか?審査提出に必要なタスクは何か?といった側面において、リスク回避に努めました。スケジュール通りに何かを成し遂げる際は「不確定要素」をどれだけ減らしていくかといったことが重要だと思いますが、アプリのサービスリリースにおいて最大の不確定要素は「審査でのリジェクト」になるかと思います。今回得た知見で、どなたかの「不確定要素」を減らす手助けが出来れば…!という気持ちです。
# 1. 公式のガイドラインを読む
兎にも角にもまずは公式のガイドラインを読みました。入り口が分かりづらかったり、各所
【AndroidStudio】xmlにあるandroidとかtoolsとかappの違いって何?
# xmlにあるandroidとかtoolsとかappの違い
xmlには以下の画像のようにandroidとかappとかtoolsという名前空間?が存在します。
これらは何を表していて、お互いどのように違うのでしょうか。
# 調べる
調べてみるとtoolsに関しては公式ドキュメントで以下の通りに説明されていました。
>Android Studio では tools 名前空間でさまざまな XML 属性がサポートされており、これを使用して設計時の機能(フラグメントに表示するレイア