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

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

接続中の複数のAndroidデバイスに一括でadb installするコマンド

# 経緯
接続中の複数のAndroidデバイスに、同一のapkを一括でインストールしたい際にStack Overflowの以下の記事の

java – How can I adb install an apk to multiple connected devices? – Stack Overflow
https://stackoverflow.com/questions/8610733/how-can-i-adb-install-an-apk-to-multiple-connected-devices
この回答のワンライナーで元気に暮らしていたのですが
https://stackoverflow.com/a/8610829/2227705

Android 11以降で `adb pair` コマンドで接続したデバイスはSerial Numberが長いせいか(詳細不明)xargsまわりが正常に動作してくれなくなりました。

Wi-Fi 経由でデバイスに接続する(Android 11 以降)
https://developer.android.com/studio/command-li

元記事を表示

Androidの画面分割で固定指示してた画面が勝手に回転してさらにアクティビティが勝手に再生させられてしまう件

画面を縦向きに固定したければ
マニュフェストのactivityのところに

android:screenOrientation=”portrait”

と書けば確かにそうなるのだが、画面分割で2画面表示にしたとき、スマホを横向きにすると、上記の設定にしているにも関わらず勝手に回転する(完全に防ぐにはOS側でrotationをoffにする必要があるがめんどくさい)。
で、回転それ自体は別に害はないのだが、回転すると、activityが再生されて計測がリセットされるのがとにかく困った。調べてみると、再生を防ぐには、同じくマニュフェストに

android:configChanges=”keyboardHidden|screenSize|orientation”

などというふうに書けば良いとあり、これで解決しましたのでメモしておきます。
回転を止めるにはどうしたら良いのだろう。

元記事を表示

Android開発のSDKでつまづいた

環境
Mac M1チップ

アプリをビルドしようとすると色々エラーがでてくる

#つまづきポイント1
buildToolsVersion 31 と 32 は
なぜかSDKファイルが壊れている云々のエラーが出た(M1だから?)
なので安定バージョンを選択

“`build.gradle
buildToolsVersion “30.0.2”
“`

#つまづきポイント2

・SDKとはなんぞや?

でつまづいた。Xcodeで必要なかった設定を初期設定として色々やらなければいけなかった
Android SDKからAPI Level 23 と最新API Level 32 をインストール

APILevelとはiOS開発でいうXcodeのバージョン?Swiftのバージョン?として考えるとイメージがしやすいのかな?(間違ってる気がする)

例えば
APILevel 23で開発行うとAndroid 6.0(Marshmallow) <- iPhoneで言うiOS 以前のスマホへは動作が確証されない? 逆にAPILevel32(現時点での最新)で開発を行うと23にはなかった新機能は使えるがA

元記事を表示

Android12でFLAG_IMMUTABLEでクラッシュする件の対応

###自作Androidアプリで謎のクラッシュが発生

あまり今までアプリのクラッシュは発生していなかったのですが、
急に同じエラーが発生し始めたので調べてみました。
対象機種はすべてAndroid12です。

“`
exception.class.missing._Unknown_: Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
at android.app.PendingIntent.checkFlags (PendingIntent.java:375)
at android.app.PendingIntent.getBroadcastAsUser (PendingIntent.java:645)
at android.app.PendingI

元記事を表示

Androidアプリエンジニアがよく見るサイトとチュートリアル

Android アプリエンジニアがよく見るであろうサイトや、Android アプリ開発を勉強するときにどこから手をつければいいのか学習のチュートリアルを紹介しようと思います。  

## 公式ドキュメント
– [Android の公式ドキュメント](https://developer.android.com/)
– 日本語のページは情報が古く更新されていない時がよくあるため、公式ドキュメントのページを見るときは `?hl=en` をつけて極力英語のページを見るようにしましょう
– [Kotlin の公式ドキュメント](https://kotlinlang.org/)
– [Material Design の公式ドキュメント](https://material.io/)

## 開発環境
– [Android Studio](https://developer.android.com/studio?hl=en)
– プレビュー版は[こっち](https://developer.android.com/studio/preview?hl=en)

## 情報収集

元記事を表示

CardViewの影をxmlで消す

#初めに一言

CardViewではを使うと指定もしていないのに、デフォルトでViewに影が付きます
その影を消す方法をGoogleで、「CardView 影 消す」などと調べてみましたが、
(デフォで付いてるはずだが)特定の条件での影が付かない場合の対処や別のViewについてが出てきて
探すのに苦労したので 自分の備忘録として残しておきます。

#早速

“`
app:cardElevation=”0dp”
“`
この一文を影を消したい対象のCardViewに追加するだけです。

#説明
簡単に説明をしておきます
CardViewに影が付いているのは、立体的に見たときに高さがあるためです。
なので、その高さ(Elevation)を0に設定してあげれば影がなくなります。

元記事を表示

Compose Material3におけるComponentの対応状況

Jetpack Compose の Material 3 の Component の対応表です。
Jetpack Compose のプロジェクトで Material 3 を導入を検討する時にでも活用ください。

|Component|material-component(1.5.0)|Compose Material3(1.0.0-alpha05)|
|:–:|:–:|:–:|
| Backdrop | – | × |
| Badge | ◯ | ◯ |
| Bottom app bar | ◯ | × |
| Bottom sheet | ◯ | × |
| [Button](https://m3.material.io/components/buttons/overview) | ◯ | ◯ |
| [Card](https://m3.material.io/components/cards/overview) | ◯ | ◯ |
| Checkbox | ◯ | ◯ |
| [Chip](https://m3.material.io/components/chips

元記事を表示

サーバに配置したWebViewのコンテンツからスマホのネイティブアプリのURLスキームの呼び出し方法

筆者は普段サーバサイドのエンジニアとしてWebシステムの開発をしているが、
担当している案件でスマホのネイティブアプリ内のWebView内にコンテンツを組み込む案件がありました。

その際に、URLスキームを使ってネイティブアプリとWebViewのコンテンツ間の連携でハマったので、備忘録として残しておきます。
本記事はあくまでサーバサイドの立場からの対処方法になります。

## URLスキームの書き方
筆者ははじめ、下記のコード用にfetch関数での読み込みを想定していました。
しかしURLスキームはネイティブアプリのWebViewのURLローダーの部分で実行する仕組みのため、
fetch関数のようなJavaScriptの非同期処理では実行が出来ませんでした。
そこで以下のように `location.href` にURLスキームを設定し、
ネイティブアプリのWebViewに読み込ませることで問題を解消しました。

“`
// 間違い
fetch(“【URLスキーム】”);
// 正解
location.href = “【URLスキーム】”;
// 参考例
location.href

元記事を表示

【2022最新】Androidスマホのシステム音声とマイク音声をパソコンにミラーリングする方法

#Androidスマホのシステム音声とマイク音声をパソコンに出力!
皆さんこんにちは!
この前、LetsViewというミラーリングアプリを例としてアンドロイドデバイスの音声をパソコンにミラーリングする方法を紹介しました。

残念なことにLetsViewはアンドロイドのマイク音声のみをミラーリングできます。従って、Androidの音声をミラーリングする時、システムの音声だけでなく、マイクの音声も同時に流れます。

今回はApowerMirrorを使ってAndroidスマホのシステム音声とマイク音声をパソコンにミラーリングする方法について詳しく説明させていただきます。ご自分のニーズに応じて、システム音声またはマイク音声を自由に選択してミラーリングできます。

##事前準備
[ApowerMirror](https://www.apowersoft.jp/phone-mirror?apptype=qiita210)
Android側は最新のバージョンをインストールする必要があります。
最新バージョン1.7.5.0 [Google Play](https://play.google.com/s

元記事を表示

別画面からのリロード処理トリガーを実装したい

#初めに
今回は、単一Activity複数Fragmentでの実装の際に、遷移先の画面でデータの更新があったときに遷移元に更新があったことを伝えたい場面が多くあると思います。
そんなときに一番簡単で一番実装しやすい方法を記事として残しておきます。
###やること
では、実際にどの様なコードを書くのかと言いますと`setFragmentResult`を使います。
`setFragmentResult`とは、`setFragmentResultListener`と対になっており`setFragmentResult`には`requestKey`に鍵として`String`を渡し`result`に値として`Bundle`を入れることができます。
`setFragmentResultListener`では`requestKey`に鍵として`String`を渡し、その鍵に格納された値を取り出すことができます
そのため、コードで書く場合以下の様になります

“`kotlin:FirstFragment
setFragmentResultListener(requestKey = REQUEST_KE

元記事を表示

[Android]GroovyからKTSに移行によるメリデメを調査

##はじめに
Gradle Plugin4.0からKTSのサポートがあります。
KTSに移行してみて、個人的に調べたり感じたりしたメリデメのお話です。

##メリット
###1. コンパイルエラーを吐いてくれる
これが、一番のメリットな気はします。
書いていて感動しました。
Groovyは動的型付けであるのに対して、みんな大好きKotlinは静的型付けなので実現できます。
今までは、Syncして初めて文法ミスなどに気づけていましたが、これで書きながらミスに気づくことが出来るように。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/5d2d3f39-8b91-073a-9572-aadbed9411d3.png)

###2. メソッド引数の補完が効く。
途中まで気づかなかったが、地味にありがたい。

↓Groovyの時はなかった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

[Android] Jetpack Compose + Navigation Compose + Orbit MVI でポケモン図鑑を作ってみた

# はじめに

Jetpack Compose とOrbit MVI を組み合わせたらどんな感じになるか試してみたかったので以下のようなポケモン図鑑アプリを作成してみました。

![Image.png](https://res.craft.do/user/full/3a21bd0e-fe7a-39aa-73ad-b52ef24b655b/doc/F6345393-103D-49B0-9A99-865E3AFA5868/BD2499F1-A7A3-4E37-96FF-97F6D53ECC27_2/yTIJGlQS4Dc52wQx4yfuAacPpIzaFV8JrB1ERKLRfzsz/Image.png)

今回作成したアプリのソースコードはこちらにあります。

https://github.com/kaleidot725/PokemonLibraryWithJetpackCompose

Oribit MVI に関する詳細はこちらです。

https://orbit-mvi.org

https://github.com/orbit-mvi/orbit-mvi

# 機能

簡単なアプ

元記事を表示

Flutterで既存のiOS / Androidアプリに機能追加 (Add-to-app):基本編

# はじめに

お仕事でFlutterで作成した画面を既存のiOSアプリ・Androidアプリに追加する事になりました。
個人的にAndroidとFlutterは多少知識があるのですがiOS(特にObjective-C)の知識が皆無で少し苦戦したので、ネイティブアプリにFlutterモジュールを組み込む手順とハマったときの対応を備忘録的にまとめておきます。

既存iOSアプリはObjective-C、AndroidアプリはJavaで実装されているのでこの記事もそれに合わせたものとなっています。
また、iOSアプリではCocoaPodsを使って組み込み、Androidでは`settings.gradle`でFlutterモジュールを追加させています。

基本的には以下の公式ドキュメントを参考にしました。
[Add Flutter to existing app \| Flutter](https://docs.flutter.dev/development/add-to-app)

# 環境
* MacBookPro M1 BigSur 11.6
* Xcode:12.5.1
* And

元記事を表示

Android Emulatorのみを起動する

# 概要

アプリを開発してると、少し前のバージョンの動きを確認する際やビルドマシンでビルドしたアプリの動作確認をする際などに、apk/aabをインストールして動作を確認することがあります。
このときに実機にインストールしてもいいのですが、なかなか認識しないことがあるためエミュレーターを使っています。
そんなときにAndroid Studioを起動→プロジェクトをビルド→エミュレーターで確認は少し時間がかかるのとメモリを食ってしまうので、エミュレーターのみ起動する方法を調べていました。

公式のサイトでも十分分かりやすいのですがよく使うオプションなどまとめたかったので記事にしました。

# 方法

## エミュレーター名一覧表示

“`
emulator -list-avds
“`

## エミュレーター起動

“`
emulator -avd avd_name [ {-option [value]} … ]
“`

# 例

> たとえば、Mac で実行されている Android Studio 内からエミュレータを起動する場合、デフォルトのコマンドラインは次のようになります。

元記事を表示

Androidでマルチモジュール化した簡単な実例

こんにちは

現在Hiltの導入のサンプルを作っているのですが、~~ついでに~~マルチモジュール化をやってみました。

ディレクトリ構成としては、アプリ名がhilt_sampleとすると

“`
└── hilt_sample
├── data
│   └── repositories
│   └── MainRepositoryImpl.kt
├── domain
│   ├── repositories
│   │   └── MainRepository.kt
│   └── usecases
│   └── FetchSomeNumberUseCase.kt
└── presentation
├── MainActivity.kt
└── MainViewModel.kt
“`

↑このようになっています。
Domain層にRepositoryのinterfaceを置いて、Usecaseから外側の層(Dat

元記事を表示

textView.text = “文字列” はできるのに editText.text = “文字列” とできない理由とは

# 経緯

俺「Javaを使っていたけど、これからはKotlinだ! まずは TextView での文字列の表示のあたりから。」
俺「`textView.setText(“文字列”)` っと。ほとんどJavaと変わらないけど、セミコロンが不要になったのはいいな」
Android Studio「セッターメソッドの呼び出しをプロパティ構文に置き換えられるよ!」
俺「なるほど!プロパティ構文で書けるのか、`textView.text = “文字列”` っと。いいね!」

俺「さて、じゃあ TextView の派生クラスである EditText の方も書き換えよう。 `editText.text = “文字列”` っと」
Kotlin「`Type mismatch: inferred type is String but Editable! was expected`」
俺「え?」
Kotlin「`Editable`じゃないとダメです。`String` なら `setText()` を使って。」
俺「…」

# 理由

`TextView#getText()` の戻り値の型は `CharS

元記事を表示

Viewを突き出して表示させたい Part2

#初めに

[Viewを突き出して表示させたい ](https://qiita.com/Tsubasa12/items/8db55ca6a186abf2d905)

前回こちらの記事で
FrameLayoutやLinearLayoutで使える
Viewを凸出して表示させる方法を書きました

今回はConstraintLayoutを使って Viewを突き出して表示させていきたいと思います

#コードでxmlに書いていく
前回と同じように Viewが突き出しているこ事を確認できるように、色のついたViewを用意しました

カウントアプリ(Android入門)

##はじめに
こんにちは。今回は、Androidアプリ開発の勉強会にて制作したアプリの1つを紹介します。
AndroidStudioを使用したことがない情報系の学生を対象として行っています。
使用言語は、Kotlinです。
※途中で飽きてくると日本語が適当になりますがあしからず

##この記事の内容
– 今回作るものについての説明
– レイアウトを作る
– アクティビティを作る
– まとめ

##今回作るものについての説明
今回は、カウントアプリを制作していきます。ボタンを押すと数字が増えたり、減ったりする単純なアプリです。

####ボタンの説明
| ボタン | 動作 |
|:-:|:-|
| PLUS | 数字を1追加する |
| MINUS | 数字を1減らす |
| CLEAR | 数字をリセットする(0にする) |

元記事を表示

Pretiaやーる

# はじめに
Pretiaやーる

# 開発環境
– Unity 2020.3.12f1
– Pretia SDK 0.5.0
– Oppo Reno3 A

# 実装
1.クイックスタートガイド

https://docs.developers.pretiaar.com/ja/tutorials/getting-started/

2.開発者コンソール

https://developers.pretiaar.com/

3.開発者コンソールから3Dスキャナーアプリをダウンロード
mapping-app(0.3.0).apk

4.スキャンアプリを使用してスキャンし保存、Relocalizationテストする

5.Unity 2020.3.12f1を開く

6.Pretia SDKをインストール
Packages/manifest.jsonに追記

~~~manifest.json
{
“scopedRegistries”: [
{
“name”: “Pretia Technologies”,
“url”: “https://registry.n

元記事を表示

TextInputLayoutにxmlでテキストを指定したらエラーが出た

# やりたかったこと
_TextInputLayout_ を使った[テキストフィールド](https://material.io/components/text-fields)にテキストを指定したかった

# やったこと
こんな感じにxmlで _TextInputLayout_ にテキストを指定してみた

“`


“`

# 出たエラー
> Cannot find

元記事を表示

OTHERカテゴリの最新記事