- 1. 【Android/Java】外部アプリ起動(Android11)
- 2. [Android]Android14(APIレベル34)の影響範囲と実装コードの対応について
- 3. [`Process 〜 has died`] アプリが頻繁にクラッシュする Android 端末の相談対応に logcat を使って調査/改善した
- 4. 【Android】一定時間毎に何かをする処理【Kotlin】
- 5. Jetpack Composeのテストで出てくるmerged tree、unmerged treeとは何か
- 6. Ionic/Angular/SQLiteとcordova(Android)
- 7. IO処理を待ってから画面遷移する方法
- 8. Android14の重要そうな差分まとめ
- 9. JetpackComposeでFirebaseAuth
- 10. SkyWay Android SDK クイックスタートが残念な件
- 11. Moshiを使ったJsonのコンバート
- 12. アシスタントアプリとして起動できるAndroidアプリの作成
- 13. RecyclerViewで何も表示されない時に確認すべきこと。
- 14. vol.2/2 APIのGET結果をキャッシュする (FlowChain,例外処理編)
- 15. android java Bluetooth接続テスト用 コード
- 16. 【Flutter】screenutilに対応したGolden Testの実装
- 17. Unity 2021.3.xでAndroid33をビルドできるようにする
- 18. vol.1/2 APIのGET結果をキャッシュする (Room+Hilt導入編)
- 19. SkyWay×Androidでビデオ通話アプリを作成してみた
- 20. Android StudioでYour CPU dose not support VT-x.のエラーを解消する方法
【Android/Java】外部アプリ起動(Android11)
## やりたいこと
外部アプリを起動したい。
Android11から[package-visibility](https://developer.android.com/training/package-visibility/declaring?hl=ja)が導入され、外部アプリを起動するためのお作法が変更となった
とりあえず、起動させるためのお作法を記載#### AndroidManifest.xml
~~~xml
[Android]Android14(APIレベル34)の影響範囲と実装コードの対応について
## はじめに
毎年iOSもAndroidも夏から秋にかけてメジャーバージョンアップされます。androidはiosほどにコードに変更を加えないといけないほどの致命的なことは少なかった印象です。
今回Android14はそうではないかもしれないということで備忘録メモしておきます。
詳しくはドキュメントを参照してください。
プレビュー版は2月、ベータ版は4月にリリースされているため開発者は動作確認できます。(自分はしていません)
メインスマホはiPhoneを使っているので、Androidはどうもベータ版を入れるモチベーションが出ません。![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109862/fefbc461-a3b4-1a30-0b67-b3794ebd9fd5.png)
去年のAndroid13は8月、Android12は10月リリースでした。
今年は8月あたりにリリースされそうです。https://gist.github.com/y-matsumoto/5a48bd982aea5
[`Process 〜 has died`] アプリが頻繁にクラッシュする Android 端末の相談対応に logcat を使って調査/改善した
2019 年ごろ購入した docomo キャリアで購入した Android 端末でアプリが頻繁にクラッシュすると相談を受けた。
調査/改善したため対応ログをまとめます。
## 相談時の現象
Android 8.1
– 前日にはふつうに使えていた。
– アプリが頻繁にクラッシュする前後に特殊な操作はした覚えがない。
– よくクラッシュするアプリと現象は以下だった。
– LINE(SNS):アプリを開いて数秒は動作するがそのあとクラッシュ
– ツムツム(ゲームアプリ): スプラッシュ画面が出る前にクラッシュ
– ほかのアプリもクラッシュしていたが、上記アプリよりひどくなかった
– 再起動は相談前に数回していて改善しなかった。
– 「設定」→「ストレージ」でストレージは合計128GB で空きは 8GBだったので満タン付近だった。
– 「設定」→「ストレージ」→「メモリ」で3時間の平均メモリ使用量が合計 6GB、使用 2.5GBなことを確認した。
– 設定アプリはふつうに動いていた。
– 開発向けオプションは有効になっていない。(使っていたのはエンジニアではなく特殊な設定は
【Android】一定時間毎に何かをする処理【Kotlin】
# 実践
“`
Timer().schedule(0, 1000) {
// 繰り返し行いたい処理
}
“`Timer().schedule()というものを使っていきます。
Android 公式では
> 指定された遅延後に開始される、 指定されたタスクの繰り返し固定遅延実行をスケジュールします。
とあります。第一引数に 何秒後に開始するか。(m秒)
第二引数に 何秒毎間隔で実行するか。(m秒)
処理を終わらせたい場合は {}内に **this.cancel()** でTimer()をキャンセルすることで繰り返し処理をキャンセルできる。# 終わりに
こういった時間を使う系のものは少し前に記事にした、Handlerなんかでもできるんだろうなと思いつつ、あえて違う方法でやってみました。
どちらが使いやすくて、どういったメリットデメリットがあるのか イメージしながら実装していくためにもう少し知っていきたいですね。# 参考
https://developer.android.com/reference/java/util/
Jetpack Composeのテストで出てくるmerged tree、unmerged treeとは何か
かなり基本的なことなんですが、よく分かっていない方も多いのではと思い書いています。
Jetpack Composeで開発していて以下のようなエラーに遭遇しました。Composeのコード
“`kotlin
NavigationBarItem(
selected = selected,
onClick = {
…
},
icon = {
Icon(
imageVector = tab.icon,
contentDescription = “Hoge”,
)
},
)
“`テスト
“`kotlin
composeTestRule
.onNodeWithContentDescription(“Hoge”)
.performClick()
“`エラー
“`
java.lang.AssertionError: Failed to inject touch input.
Reason: Expected exactly ‘1’
Ionic/Angular/SQLiteとcordova(Android)
AndoroidモバイルアプリでSQLiteにデータを格納したく、サンプルアプリを作ってみました。
他のWebサイトでも多くの先輩方が掲載をしてくださっていましたので参考にさせていただきました。
今回は、今現在最新のバージョンでサンプルアプリを作成してみました。
ソースコードはGithubに公開していますのでなにかの参考にしていただければ幸いです。## ライブラリのバージョン
* ionic/angular Version 7
* Angular version 16
* Ionic version 7
* cordova plugin SQLite database version 6.4
* cordova SQLite Porter version 6.4:::note
動作確認はAndroidのエミュレータを使用します。
:::## 主な機能
* アプリ起動時のデータベースファイルの作成(サンプルレコードのINSERT)
* Person情報の登録、更新、削除## UI/画面構成
* Person一覧画面
![image.png](https://qiita-i
IO処理を待ってから画面遷移する方法
# はじめに
画面遷移をする際に事前にサーバにリクエストしてから遷移したいときってありますよね。
単純にIO処理を待ってから画面遷移をするだけでできると思ったのですが、そう簡単にはいかなかったので解決策をまとめておきます。# 環境
2023年7月時点で以下の環境で実施しています。
“`gradle:build.gradle.kts(プロジェクトルート)
plugins {
id(“com.android.application”).version(“8.0.2”).apply(false)
id(“com.android.library”).version(“8.0.2”).apply(false)
id(“org.jetbrains.kotlin.android”).version(“1.7.20”).apply(false)
id(“com.google.dagger.hilt.android”).version(“2.44”).apply(false)
}
“`
“`gradle:build.gradle.kts(モジュール)
depen
Android14の重要そうな差分まとめ
# はじめに
Android13が出てきたのがつい先日のように感じますが、もうAndroid14がでようとしていますね。
個人的にはAndroid13もそれなりに修正が必要な差分があり大変な印象がありましたが、14ではどうでしょうか?
先んじて重要そうな差分を備忘録的にまとめておこうと思います。# 正確なアラームのスケジュール設定がデフォルトで拒否される
> Android 13 以降をターゲットとする新しくインストールされたアプリのほとんどで、SCHEDULE_EXACT_ALARM 権限が自動的に付与されなくなりました(権限はデフォルトで拒否されます)。
https://developer.android.com/about/versions/14/changes/schedule-exact-alarms?hl=ja
とのことです。
アラームって最近使うことないですが、使用されているプロジェクトで自動付与の恩恵を受けているプロジェクトは上記権限要確認ですね。
ただし、 OnAlarmListenerを使用して通知を受けている場合は上記権限は必須でないようです。# フ
JetpackComposeでFirebaseAuth
# JetpackComposeでFirebaseAuth
FirebaseAuthをJetpackComposeで実装したいと思います。
The Firebase Blogの「[Adding Firebase Authentication to a Jetpack Compose app](https://firebase.blog/posts/2022/05/adding-firebase-auth-to-jetpack-compose-app)」を参考にしたのですが…いかんせんわかりづらいですね…
もう少しかみ砕いた感じで実装していきます。## FirebaseAuth(email, anonymous)のエンドポイント
| エンドポイント | |
|:–|:–|
| auth.signInAnonymously | 匿名ユーザの作成とログイン |
| auth.signInWithEmailAndPassword | メールアドレス認証ユーザのログイン |
| auth.createUserWithEmailAndPassword | メールアドレス認証ユー
SkyWay Android SDK クイックスタートが残念な件
SkyWay Android SDKを使ってみました。
まずは[SkyWay Android SDK クイックスタート](https://skyway.ntt.com/ja/docs/user-guide/android-sdk/quickstart/)に従って、小さい実装を組みましたが、クイックスタートの内容が残念だったで記します。
まず
![スクリーンショット 2023-07-21 13.33.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103548/ecec0720-746e-3381-1f88-06da572a1f72.png)
とありますが、これは不要です。
使っているのはAndroid Studio Flamingoですが
“`
buildFeatures {
compose true
}
“`
のままで良いです。
このオプションはJetpack Composeを使うかどうかのオプションですが、そもそもJetpack Compose と la
Moshiを使ったJsonのコンバート
# はじめに
今回はGsonが非推奨なのでMoshiを使ってのJson変換を紹介していきます
### 本文
コード自体は下記の通りです
“`kotlin
Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
.adapter(HogeData::class.java)
.fromJson(Json)
“`
`adapter`の中には変換先のデータクラスを渡し、`fromJson`には変換したい`Json`を渡します。
ここで***2点***注意が必要なのですが、
***1つ目***が`.add(KotlinJsonAdapterFactory())`Kotlin用のFactoryを追加することです
***2つ目***は変換先のデータクラスで下記二つのアノテーションをつけることです。
データクラス自体には`@JsonClass(generateAdapter = true)`
各種変数には`@Json(name = “hoge”)`
### 最後に
今回はだんだんと増えてくるであろうMoshiの実装方法を紹介していきました
アシスタントアプリとして起動できるAndroidアプリの作成
# はじめに
この記事ではAndroidアプリをアシスタントアプリとして登録したい時に設定するコードについて紹介します。例としてコードを掲載していますが、まだ開発途中であるため、一部機能が使用できず、また強制停止が頻発します。あくまで参考程度でお使いください。
# Androidスマホのショートカット機能
Androidスマホには、画面の右下から中央下に指をスライドしたり、ホームボタンを長押しするとアシスタントアプリが起動するショートカットが実装されています。また、端末によっては、アシスタントキー(SHARP AQUOS)や、Googleアシスタントボタン(SONY Xperia)などの、アシスタントアプリを起動するためのボタンが存在します。しかし、あまり使わないんですよね。この機能。
じゃあ別のアプリを割り当てたい。でも残念なことに、これらのショートカットは、アシスタントアプリとして登録されているアプリでないと、起動させられないんです。
RecyclerViewで何も表示されない時に確認すべきこと。何度もハマるので自分の備忘のために記入。
RecyclerViewに何も表示されない場合、以下の点を確認しましょう。
## RecyclerViewにlayoutManagerを設定する。
layoutManagerに何も設定しないと、何も表示されません。
view Bindingを使用している場合、以下のような感じで設定する。“`XXXActivity.kt
binding.recyclerView.layoutManager = LinearLayoutManager(this)
“`コードで設定する代わりにlayout editorで設定しても良い。
## (表示後にデータ更新している場合) nofityDataSetChanged() を呼ぶ
RecyclerViewAdapterが参照しているデータが変わった場合、表示を更新するためには
notifyDataSetChanged()
などを呼び出す必要がある。
(変更内容によっては行単位の更新を反映するメソッドのほうが適切な場合もあります。)以上
vol.2/2 APIのGET結果をキャッシュする (FlowChain,例外処理編)
# APIのGET結果をキャッシュしたい!
[前回](https://qiita.com/jozuko_dev/items/e1f47bd1a14a138fb51f)Roomの導入を行いました。
今回は、以下の処理をFlowのChainを使って記述していきます。
– 10分経過している時は、[サーバーから取得]->[DB保存]->[結果返却]
– 未経過の場合は、[DBから取得]->[結果返却]## 各処理のFlow
サーバーからの取得と、DBへの保存、DBからの取得は、すべて異なるflowで記述しています。
“`kotlin
// サーバーからの取得
flow> {
val response = forecastApi.getArea()
if (response.isSuccessful) {
emit(Future.Success(value = response.body()!!))
} else {
throw HttpException(response)
}
}
android java Bluetooth接続テスト用 コード
### ■ テスト概要
・Android 10の端末では、socketのconnectがちゃんと機能していたが、Android 11 の端末だと精度がかなり悪くなる。#### 対象テストバージョン
(Bluetooth 2.0)(Bluetooth 3.0)### ■ テスト用ソースコード
“`xml activity_main.xml
【Flutter】screenutilに対応したGolden Testの実装
# はじめに
現在進めているプロジェクトでは画面サイズに合わせてWidgetやフォントサイズを調整できるよう
[flutter_screenutil](https://pub.dev/packages/flutter_screenutil)を導入しています。Widget Test実装時はGolden Testで実装しているのですがその際に詰まったことを備忘録がてら書きます。
# 前提
[flutter_screenutil](https://pub.dev/packages/flutter_screenutil)とは?
Widgetやフォントサイズを動的に変更できる便利なパッケージです。
詳細な説明は省きますが公式を見て初期設定さえすれば簡単に実装することができます。Golden Testについて
Golden Testの詳細は省きますが今回の対応では[goolden_toolkit](https://pub.dev/packages/golden_toolkit)を利用しています。
Flutterではパッケージを導入せずともGolden Testの実装は可能ですが、よりテス
Unity 2021.3.xでAndroid33をビルドできるようにする
## 環境
– Unity 2021.3.9f1(Appleシリコン版)
– Android Studio 2022.2.1 Patch 2
– macOS Ventura 13.4.1(22F82)## エラー
– Androidのリリースビルド(aab)を作成しようとすると、下記のエラーが発生する。
– エラーメッセージの通りで、android 33のSDKがないからインストールして、再起動してね、という内容。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37873/3129bab7-875f-4c30-9703-c0e7a43a4851.png)
“`
Target Android SDK not installedAndroid SDK does not include your Target SDK of 33.
Please use the Android SDK Manager to install your target SDK version. Re
vol.1/2 APIのGET結果をキャッシュする (Room+Hilt導入編)
# APIのGET結果をキャッシュしたい!
天気予報アプリも順調に育ってきました。
「画面を表示」 -> 「APIコール」 -> 「表示」はできましたので、APIコールの回数を減らすべく、10分以内のリクエストならDBを参照する様にしたいと思います。ということで、キャッシュ先をRoomにすべく、導入していきます。
## Room
### 1. gradleの定義
まずは、Roomの依存定義を行います。“`diff_gradle:app/build.gradle
plugins {
id ‘org.jetbrains.kotlin.android’
+ id ‘kotlin-kapt’
id ‘com.google.dagger.hilt.android’
}android {
defaultConfig {
+ kapt {
+ arguments {
+ // ① schema定義を出力しておくと、AutoMigrationできるようになるので
+
SkyWay×Androidでビデオ通話アプリを作成してみた
# はじめに
[Qiitaでイベント](https://qiita.com/official-events/93564ad363199fa7999c)をやっているので、参加するためにSkyWayを使ってみました?♂️
[前の記事](https://qiita.com/nakashimaakio/items/3fddc5b685f50dc48e63)ではJavaScriptで書きましたが、今回はAndroidアプリ化しました。
ドキュメントは[こちら](https://skyway.ntt.com/ja/docs/user-guide/android-sdk/quickstart/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_engineer_festa_2023)から。https://skyway.ntt.com/ja/docs/user-guide/android-sdk/quickstart/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_en
Android StudioでYour CPU dose not support VT-x.のエラーを解消する方法
Intel Macで動作していたAndroid StudioのシミュレーターがM1 Macに切り替えた後、Your CPU dose not support VT-x.というエラーが発生してシミュレーターを立ち上げられなくなった。
調べたところ解決できたのでまとめておこうと思います。### 環境
・ Apple M1 Pro/mac OS Ventura
・ Android Studio Flamingo 2022.2.1### 解決方法
Settings…>System Settings>AndroidSDKのSDK Toolsタブを開き、Android Emulatorのチェックボックスの中がーになっていたのでチェックマークを入れたどうやらAndroid Emulatorが古くなっていたようだったのでチェックを入れて最新版のをインストールしたらシミュレーターで起動できるようになりました