Android関連のことを調べてみた2022年05月01日

Android関連のことを調べてみた2022年05月01日
目次

Android アプリのインストール方法を比較してみた

## 何が書いてあるか
Android アプリを端末にインストールする方法は一般的なユーザーは Google Play を使用しますが、目的や状況に応じて別の手段を取ることも考えられます。
それぞれの手段のメリットデメリットは何か、どういう時に向いているかについて書いていきます。
インストール方法については軽く触れますが、具体的な配布方法については今回は触れません。

## 手段
1. [Google Play](https://qiita.com/akirago/items/990fea92748c93bd4389#google-play)
1. [Firebase App Distribution](https://qiita.com/akirago/items/990fea92748c93bd4389#firebase-app-distribution)
1. [Website](https://qiita.com/akirago/items/990fea92748c93bd4389#website)
1. [adb command](https://qiita.com/akir

元記事を表示

【Flutter】MainActivityをComponentActivityのサブクラスにしたい【Android】

# はじめに

Flutter開発してると、MethodChannelを使ってプラットフォーム固有の機能を使いたいことがままある。
AndroidだとMethodChannel経由でActivityにアクセスするんだけども、アクセス先のActivityがデフォルトだとFlutterActivityになっていて、ComponentActivityを継承していない。

これだと、activity-ktxの`viewModels`が使えなくて、DIするときにとても困ってしまう。
ViewModelFactoryを作ったりして頑張ればなんとかなったのだろうけど、**僕にそんな技術力はないので**別の方法を探したら、いい感じに解決できた。

あんまり記事とかもなかったので共有。

# 結論

[FlutterFragmentActivity](https://api.flutter.dev/javadoc/io/flutter/embedding/android/FlutterFragmentActivity.html)を使う。

ドキュメントを見てくれればわかるけど、この子はしっかり`andr

元記事を表示

adb コマンド一覧

## はじめに

今更ながらせっかくなので個人的によく使う adb のコマンドをまとめました。

> 参考:Android Debug Bridge (adb) とは?

Android デバイスと通信するための多用途のコマンドラインツールになります。
adb コマンドを使用すると、アプリのインストールやデバッグなど、さまざまなデバイス操作を実行できます。(公式より)

> 公式ページ

[Android Debug Bridge (adb)](https://developer.android.com/studio/command-line/adb)

> サンプルソース

– GitHub
[adbtool-for-mac](https://github.com/ngkr327/adbtool-for-mac)

## コマンド一覧

### IP アドレスを使用してデバイスに接続する

“`
$ adb connect
“`

### 接続済みデバイスのリストを取得する

“`
$ adb devices
“`

### エミュレ

元記事を表示

ラズパイとAndroidスマホでルーター作った

## Androidスマホをラズパイでルーターつくった

引っ越しを控え、現宅のフレッツ光の移設手続きをしていたのですが、諸事情で1ヶ月以上回線が引けない状況になりました。
仕方ないので、ルーターを自作します。

## USBテザリングを有線LANに変換させてみた
Androidスマホで有線LANテザリングが出来るとベストなのですが、あいにく手元に対応しているスマホがありませんでした。
結果、RaspberryPiでブリッジしてあげることで、これを実現しました。

## 環境
– SHARP SH-M05 (Android 9)
– RaspberryPi Model2B
– 楽天モバイル(楽天回線)

## やり方
USBテザリングを、ラズパイの有線LANポートとブリッジする事で実現しました。
具体的には、SH-M05が、USBテザリングのEnable/DisableでUSBデバイスIDが変わることをトリガーとして、udevを使いブリッジをコントロールします。

“`
Clients —> [[eth0]-[br0]-[usb0]] —> [Android 9] —>

元記事を表示

【Android】Retrofit2のCall.enqueue()は非同期で処理されるの巻

# はじめに

皆さん、ごきげんよう!れぶです!

先日`Retrofit2`ライブラリを使って、API通信した結果を`RecyclerView`でリスト表示しました。その際に自身が悩んだ箇所が1点あったので、今回の記事で原因と解決方法を記述していきます。

自身のためでもありますが、自分と同じ悩みを持つ方々にも刺さる記事になれば幸いです。
それでは、参りましょう!!

# 開発環境

* MacBook Air
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Java 8
* compileSdkVersion 31
* minSdkVersion 21

# 動作イメージ

完成イメージは以下になります。
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2456250/be906014-7488-9013-7a48-343e36a93976.gif)
入力された郵便番号をもとにAPI通信([zipclo

元記事を表示

Azure Spacial anchorsを使ったマルチプラットフォーム位置共有方法でつまずいた点

# はじめに
この記事は、自分がHoloLens2とAndoridとでマルチプラットフォーム化する際に困った部分を記載している記事になります。

※バージョンが更新された場合修正されているかもしれないので気を付けてください。

# 前提条件
公式がだしているAzure Spacial Anchorsのチュートリアルドキュメント

https://docs.microsoft.com/ja-jp/learn/modules/azure-spatial-anchors-tutorials/

イワケンさんが出されている記事を参考にし

https://zenn.dev/iwaken71/articles/hololens-2022-2#%E3%82%B7%E3%83%BC%E3%83%B3%E3%81%AE%E6%BA%96%E5%82%99-(%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)

これらを一通り実践してから自分のつまづいたところを確認していただけると
理解しやすくなると思います。

元記事を表示

【初心者応援】画像を選ぶ際の判断基準

# 初めに
今回はアプリ内で使用する画像をどういった形式で保持しておくかについて書いていこうと思います。
自分が新人だった頃に、`svg`って何?どうしてここはsvgじゃないの?等疑問に思ったことがあったので、もし同じ感覚になっている方がいれば助けになれれば幸いです。

### SVGとは
まず`svg`とはなんぞや?という部分からですね。
`Scalable Vector Graphics`(スケーラブル・ベクター・グラフィックス)の略で「大きさを変えられるベクター画像」という意味です
実はグラフと一緒で指定された座標を指定された色で塗りつぶしてるのがsvgなんですね。
他の`PNG/JPEG`はピクセルの集まりなので拡大した際に`svg`の方が綺麗だったりします。
また、名前の通り大きさを変えても綺麗に描画することができます。

### 判断基準
ここからは、普段自分がどうやって画像の形式を分けているかをご紹介します。
自分は基本的に`svg`を使います。
ただし、`svg`は先ほど紹介したように座標や色の情報を持っているため、複雑で大きい画像を描画するとなるとデータがどうしても重

元記事を表示

2022年度版 RecyclerViewをわかりやすく解説(Kotlin, View Binding)

# はじめに
「リスト表示程度で難しすぎる!!」
全初心者がそう思うであろうRecyclerViewを超わかりやすく解説します。

::: note warn
本記事ではViewBindingの使用を前提に書いております。
findViewByIdより明らかに見やすく動作も早いです。
知らない人は調べてね!!
:::

↓完成図
Screenshot_20220427-155940.jpg

# RecycleViewとは
見た目をカスタム可能なリスト表示です。
特徴として、例えば100個のアイテムを表示したいとき、スマートフォンの画面に一度に見えているのは高々10個だとしましょう。
そしたら残りの90個のレイアウトを用意しておくのって無駄ですよね。
だから見えてる10個のレイアウトを再利用して使いまわ

元記事を表示

Android Studio エミュレーターでのエラー Qt platform plugin could be initialized … 【備忘録】

## ■事象
Android StudioでADV Managerからエミュレーターを指定して、起動した時にエラーが出てきた

## ■エラー文
「This application failed to start because no Qt platform plugin could be initialized. Reinsalling the application may fix this problem」

## ■原因を探ってみる
グーグル検索したところ、他のソフトウェアで定義された環境変数がアプリケーションと競合するために発生しているので、アプリケーションを起動する前に、現在の環境から以下の変数を削除してください。とのことだったので、環境変数を見てみたが以下の環境変数は設定していない。なぜ?
・QT_PLUGIN_PATH
・QML2_IMPORT_PATH

## ■本当の原因
どうやら、C:\Users\{username}直下のAndroidStudioのSDKやら何やらにアクセスできないため発生していたらしい

usenamerフォルダ以下の、「読取り専用」「隠しフ

元記事を表示

【Material Design】Material Designを読むときに知っていると理解しやすくなる単語集

## 概要
この記事では、少し前に公開された[Material Design 3(通称 : M3)](https://m3.material.io/)を読むときに
知っていると、M3さらに理解しやすくなる単語とその意味について解説します。

この記事を読んで、単語とその意味について理解すれば、
M3をさらに理解することができるでしょう!

## Banner
目立つメッセージと、それに関連するアクションを表示するコンポーネント。
[詳しい解説はこちら](https://material.io/components/banners)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/ceb7706c-0fd6-ccbd-f761-902f73290ac9.png)

## Button
メールの送信やドキュメントの共有、投稿へのいいね!など、ユーザーのアクションを助ける コンポーネント。
[詳しい解説はこちら(M3)](https://m3.material.io/compon

元記事を表示

Flutter × Firebaseでアプリを個人開発した話

今回、初めてFlutterとFirebaseを使ってandroidrアプリを作りました。
個人でアプリを作ってみたい人やFlutterを使ってみたい人の参考になればと思います。

# 作ったアプリ
[てすろぐ](https://play.google.com/store/apps/details?id=com.murapon.self_scoring_app)
テストや問題集を解いた結果を保存し、復習に使えるようにするアプリです。
今後、iosアプリもリリースする予定です。
アプリに関してはこちらにも書きました。

# 使った言語、サービス
## Flutter
1つのソースで、android、ios両方のアプリができるのでこちら選びました
僕の場合、[現場で使える Flutter開発入門](https://www.amazon.co.jp/gp/product/483997375X/)を買って、一通り勉強してから作り始めようと思ったのですが、初心者には少し難しい内容で、1章だけ読んで挫折しました・・:sweat:
ただ、サンプルソースがダウンロードできるようになっていたので、それを

元記事を表示

UnityでHMSのAnalytics Kitを使用する方法

Unityのオフィシャルドキュメントにしたがって、HMSのAnalytics Kitを実装しましたが、うまくいきませんでした。

Analytics Kit (HMS)
https://docs.unity.cn/cn/Packages-cn/com.unity.huaweiservice@2.3/manual/analyticskit.html

“`
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK cr

元記事を表示

既存の Android アプリの UI を Jetpack Compose で書き換えた際の知見をまとめてみる

# 概要
View & Fragment で画面を20ほど作っていた既存のアプリを1ヶ月かけて Jetpack Compose で書き換えたので、その際の進め方や気づいたことをまとめてみます。

Jetpack Compose を使う意義や具体的な書き方については別の記事をお読みください。

# モチベーション
[Jetpack Compose 移行する前と移行した後](https://developers-jp.googleblog.com/2020/12/jetpack-compose-before-and-after.html) を読んでやってみたくなったのがきっかけでした。特にビルド時の最適化のパフォーマンスが向上するという点に興味を持ちました。

> 最大のポイントは Compose がほとんどのデベロッパー指標で良好な(または中立的な)影響を示していることです。この点と Compose でデベロッパーの生産性が大幅に向上することを踏まえれば、いろいろ考えなくても、Compose が Android の UI 開発の未来であることはわかります。

# 書き換えのステップ
大ま

元記事を表示

Androidアプリを開発する #1

# はじめに
今回から本格的に中身の機能を作っていきます
下準備編はこちらから

https://qiita.com/sekkenn1102/items/eb0bc3646036b0ad9d36

# 作成するアプリに関して
#0の時にもほんの少し触れましたが、今回から「汎用性の高そうなスケジュール・タスク管理アプリ」を目指していきます
目指すにあたって最低限必要のは以下の3機能だと思っています
* スケジュール/タスクを登録する画面
* 登録したスケジュール/タスクを表示させる画面
* そもそも登録データを保存するためのDB

想定としてはかなりざっくりしていますがこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/9a953895-3368-c7b4-2de8-bca2c7bf4aae.png)

まずはスケジュール/タスクを登録する画面から手を付けていきます

# スケジュール/タスクを登録する画面を作成する
登録画面に必要な項目としては以下を想定していま

元記事を表示

KMMプロジェクトを作ってバージョンカタログが利用できるスタート地点に立つまで

## はじめに
設定が複雑で設定やちゃんと動くようにするだけで一苦労。
とりあえず現時点での環境でプロジェクトが動くようになるまでまとめておく。後々別環境とかで動かす機会があったら、最初から環境構築から書きたい。
ライブラリのバージョンカタログ、バージョン管理ができるようになるまでします。

## 環境
* Macbook Air M1 2020
* iOS 12.1 Monterey
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Kotlin Multiplatform Mobile plugin 0.3.2
* Xcode 13.2.1

## プロジェクトが動くようになるまでの手順
1. Android StudioでNew Project->Kotlin Multiplatform App
2. 名前を任意で決めて、OSバージョンは29〜
3. アプリ名は、androidApp,iosApp,shared
4. iOS frameworkは、 CocoaPods dependency frameworkを利用
5. Androi

元記事を表示

[Android + Vulkan + ImGui] AndroidでGUIをC++で

# 概要
AndroidにVulkanベースでImGuiを導入できた。
ImGuiとはMITライセンスで公開されている、C++で書けるGUIライブラリである。
https://github.com/ocornut/imgui
ImGuiはexampleとして、いくつかのplatformとgraphics APIの組み合わせを紹介している。
https://github.com/ocornut/imgui/tree/master/examples
この中にAndroid + Vulkanの組み合わせはないが、やってみると導入は可能だったので、手順を簡単にまとめる。

# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446998/0a10d98e-41c5-26a6-5c0c-10062754fca5.png)
私の前回記事の続きにimguiの領域を追加。
https://qiita.com/Aqoole/items/d8f020b24d2861d20322
オブジェクトはray

元記事を表示

【初心者応援】初心者Androiderに贈る、学習時に使用できるコンテンツ3選

# はじめに

[新人プログラマ応援 – みんなで新人を育てよう!](https://qiita.com/official-events/3f21c92121aa125807b4)
ということで、今月から社会人となり、エンジニアになる方も多いのではないでしょうか?
今月は上記イベントに合わせて初心者応援をキーワードとして記事を書いていこうと思います。

今回は初心者応援記事第5弾、Android学習時に使用できるコンテンツを3つほどご紹介したいと思います。

# 1.GoogleDeveloperトレーニングコース

https://developer.android.com/courses

1つ目にご紹介するコンテンツは、Googleが公式に出している、学習コンテンツです。
初心者から経験者まで幅広くコンテンツを提供しており、基本的にCodelabベースの学習システムです。

Kotlin、Androidの基礎中の基礎から、比較的新しい技術であるComposeにフォーカスを当てた講座など、それぞれにあったレベル間で学習できるのが強みとなっています。

今後Androidをメインで開

元記事を表示

Nexus 7(2012)にAndroid 7をインストールする

Nexus 7(2012)が余っているので、AndroidのカスタムROMをインストールしてみました。
手順としては他のAndroid機種でも大体同じなので、試してみたい人はどうぞ。

なんでこんな古いタブレットをまだ使っているかというと、Androidアプリの実機テスト用です。
パワフルな最新機種で早く動くアプリを作るのは簡単です。
しかし古い(非力な)機種でもある程度の早さで動くアプリを作るには、アルゴリズムやデータ構造の工夫が必要です。
そうゆうテストをするために敢えて古い機種を残しています。

今回はXDAのフォーラムで紹介されているAOSP 7.xをインストールします。

# 1. TWRPのインストール

まずは`Recovery`と呼ばれるプログラムを書き換える必要があります。
`Recovery`は何をするかというと、Androidをリセットするときに元の初期状態に戻すためのプログラムです。

いくつか有名なリカバリーソフトがありますが、`TWRP`が一番有名なのでこれを使いましょう。

Nexus 7の`電源ボタン`と`下ボリュームボタン`を**同時押し**

元記事を表示

今更ながらRiverPodのdependenciesをためしてみた

タイトルの通り、今更ながらRiverPodのdependenciesを試してみたメモです。
※RiverPod 1.0.3で確認
# そもそもdependenciesとは?
https://pub.dev/documentation/riverpod/latest/riverpod/Provider/dependencies.html
かんたんにいうと、ProviderRefからScopedなProviderにアクセスするためのパラメータです。dependenciesにScopedなProviderを指定すると、そのProviderもScopedになりアクセスが可能になります。

“`dart
final scopedValue = Provider((_) => ‘1’);
final valueDependsOnScopedValue = Provider(
(ref) => ref.watch(scopedValue),
// この指定により、scopedValueがoverrideされるとvalueDependsOnScopedValueもscopedになる
de

元記事を表示

AnimatedSwitcherが動かない!というときの対処法

# 結論
これを
“`dart
class _BadWidget extends ConsumerWidget {
const _BadWidget({Key? key}) : super(key: key);

@override
Widget build(BuildContext context, WidgetRef ref) {
return AnimatedSwitcher(
duration: const Duration(milliseconds: 100),
child: Icon(
ref.watch(_shouldShowDetail)
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
),
);
}
}
“`
こうする
“`dart
class _GoodWidget extends ConsumerWidget {
const _GoodWidget({Key? k

元記事を表示

OTHERカテゴリの最新記事