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

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

Android Studio Chipmunkにアップデートした後にGitのDiffで困った話

# Android Studio上でGitのDiffが使用できない!!

大げさに書いちゃいましたが本当にコードレビューがやりにくくなって困りました。
具体的にはDiffを使用すると以下のようなエラーが表示されます。

java.lang.Throwable: Assertion failed
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:218)
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:227)
at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent.(TextEditorComponent.java:76)
at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorC

元記事を表示

AndroidからPCへタップ座標値をUDPで送信(複数のタップアイコンを制御する)

■プログラムの概要
 ・前回投稿(*)の改良版です。複数のタップアイコンを選択的に制御できるように
  しました。但し、同時制御(マルチタップ)ではありませんので、ご注意ください。
  (*)https://qiita.com/voibow/items/e64ca603d84cb4ba5534
 ・用途:電子楽器。※YouTube動画リンク先:**https://youtu.be/_rWSoXfOAH0**

■Android側のプログラムのソースコード
 (補足)各種アイコン(glitter_icon.png等)や背景画像(bg.jpg)は、pptで作成。
“`java:activity_main.xml

【Zoom Video SDK】初心者による導入メモ – Android/Kotlin編

https://qiita.com/official-events/86d8555146e1b14fef24

この記事は[【Zoom Video SDK】初心者による導入メモ – iOS/Swift編](https://qiita.com/yuppejp/items/838e1becfc2774bd4e85)に続くAndroid/Kotlin編です。
Swift編ではZoom Video SDKが初見だったので初心者すぎて詰まりまくりでしたが、現在はSwiftUI版をもくもく実装中です。複数人のグループ会話を実装する上で、iOSだとシミュレータでカメラが使えなくてテストが捗らないので、Androidのシミュレータで端末数を確保しようと思い、今回はAndroid(Kotlin)でZoom Video SDKを入門したいと思います。

# 完成イメージ
[前回](https://qiita.com/yuppejp/items/838e1becfc2774bd4e85)と同様に自分と相手の二人でビデオ会話できるシンプルなアプリです。
![image.png](https://qiita-i

元記事を表示

Intellij IdeaからJetpack Composeを使ってみる

初投稿です。

# Jetpack Compose

[Jetpack Compose](https://developer.android.com/jetpack/compose) が2021年7月に正式リリースになりました。公式サイトによると
– XMLを使う煩雑さの軽減
– 宣言型UI(UIの構築だけでいい感じによしなにしてくれる)
– KotlinだからAPIを直接呼べる

とかを売りにする

>ネイティブ UI をビルドするための Android の最新ツールキット

なんだそうです。
しかも聞くところによるとマルチスレッドにいい感じに対応して、
UIの更新が必要なら非常に ~~変態的な~~ 高度な実装により更新を必要とする部分だけ再描画するそうで。
未来を感じる技術です。イヤータノシソウダナー

..

>2021年7月に正式リリース

_人人人人人人人_
> 2021年7月 <
 ̄Y^Y^Y^Y^Y^Y ̄

### 出遅れました

約一年遅れです。忙しかったんです。

それでやっとこの度試しに使ってみることしたのですが、~~GoogleのAndroid St

元記事を表示

Google I/O 2022の自分的まとめ(Keynote, Developer Keynote)

# 序文
今年のGoogle I/O 2022について自分なりのメモをまとめてましたが、改めて読み返すと色々書いてたので公開しておこうかなと思います。

# キーノート
## 所感
去年に引き続き機械学習の発展が大きいのと、セキュリティの話が多かった

## キーノートまとめ
* Googleのミッションについて
* Organize the world’s information and make it universally accessible and useful
* 世界中の情報を整理し、普遍的にアクセス可能で有用なものにする
* 改めて冒頭でGoogleのミッションを伝え、
* 情報への理解を深めて知識に変えること
* どこからでも/誰でも簡単に知識にアクセスできるようにコンピュータを進化させること
* の2つの要素についてGooleの製品がどのようにそれを支援しているのかという枠組みで紹介するとのこと
* 時事問題について
* 今年はコロナとウクライナ問題を併記
* コロナ一色だった2021年

元記事を表示

コルーチンとチャネル入門#5

ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/05_Concurrency)
# 並列性
Kotlinのコルーチンはスレッドと比較して非常に安価である。新しく計算を非同期で始めたいときは常に、新しいコルーチンを作ることができる。
新しいコルーチンを開始するためには、主な「コルーチンビルダー」、つまり`launch`か`async`か`runBlocking`のいずれか一つを使う。
`async`は新しいコルーチンを開始し、`Deferred`オブジェクトを返却する。`Deferred`は`Future`や`Promise`のような他の名前で知られる概念を表す。つまり、計算を格納するが、最終的な結果を得る時は`遅延`する。それはいつか `将来`に結果を`約束`する。
`async`と`launch`の主な違いは、`launch`が特定の結果を戻すことを期待していない計算を開始するために使うということである。`launch`は`Job`を返却し

元記事を表示

Flutter Admobのデモ広告 (バナー)を表示させるまでの設定

## はじめに
久々にFlutterアプリを作り`Admob`を使おうとしたのだが、過去にも使ったことがあるのに少し時間がかかってしまった。
基本的には毎回ググるのでも問題ないのだが、毎回探すの少し面倒なので自分用メモとして端的に手順だけメモする。

## 環境
【PC】
  MacBook Air (M1, 2020)

【各SWバージョン】
 ・macOS Big Sur 11.6.1
 ・Flutter 2.5.3 (dart 2.14.4)
 ・Xcode 13.1
 ・google_mobile_ads: ^1.0.1

## メモ内容

### ① 必要パッケージのインストール

pubspec.yaml に`google_mobile_ads`を追記。

“`yaml:pubspec.yaml
dependencies:
flutter:
sdk: flutter
google_mobile_ads: ^1.0.1
“`

ターミナルで `flutter pub get` を実行

### ② Admob のサイトでアプリを追加する

 https:

元記事を表示

【Flutter】タブのある画面にタブのページを指定して遷移する

# 実現したいこと
Flutterにおいてタブのある画面に遷移したとき、基本的には最初のタブが開いていると思いますが、場合によっては任意のタブを指定して画面遷移したい場合があると思います。

このような場合の実装方法について解説します。

## 自分の環境
macOS Monterey 12.2.1(21D62)
Flutter 2.8.1
Dart SDK version: 2.15.1 (stable)
VSCode 1.67.2

# タブ画面の実装
現在のタブのページを保持する必要があるため、ステートフルな画面である必要があります。

詳細は以下公式ドキュメントなどを参考にしてください。(ドキュメントはステートレスなのでステートフルに書き換えること)
https://docs.flutter.dev/cookbook/design/tabs

※すでにステートフルなタブの画面が実装されている方は **「タブを指定できるようにする」** に飛んでください。

[実装イメージ]
![image.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Kali Linux2022.1 でハッキングラボをつくってみる13 Androidx86 v.7へのハッキング Metasploitのセッション確立まで

# はじめに
「ハッキング・ラボのつくりかた」の特典「Androidのハッキング」を参考に、kaliLinux2022.1で検証した記事です。

:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::

# ダウンロード
[Androidx86 v7.1のダウンロードページ](https://www.fosshub.com/Android-x86-old.html)
ちなみに、最新版はv9.0です。
なお。OSのインストール方法と初期設定については、省略しますが、少し気になったところにだけ触れておきます。
仮想マシンの設定項目「ディスプレイ」の「グラフィックコントローラー」の値を「VBoxVGA」に、「アクセラレーション」の値を「3D」にしてください。
やり方は、androidx86の仮想マシンの「設定」

元記事を表示

【Flutter】Android12で実行出来なかったけど解決![INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl764624764.tmp/base.apk (at Binary XML file line #21): intent tag may have at most one action.]

# エラー内容
FlutterをAndroid12で実行したときに下記のエラーが出ていた。
“`
Error: ADB exited with exit code 1
Performing Streamed Install

adb: failed to install path/build/app/outputs/flutter-apk/app.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl764624764.tmp/base.apk (at Binary XML file line #21): intent tag may have at most one action.]
Error: Failed to install APK again.
Error launching application on Pixel 4.
“`

# 解決方法

下記の部分が重要で、intent タグは最大1つのactionタグ

元記事を表示

Androidでライト/ダークモードのスクショをshellを叩けば一括で撮影できるようにしてみた

PRを出す際にライトモード、ダークモードそれぞれのスクショを撮ってGithubに上げていたのですが、毎回ライトモード、ダークモードの切り替えをしてスクショを撮るというのが非常に手間だったのでshellを叩けばPCのデスクトップに出力してくれるようにしました。

# 環境
Macbook Pro Catalina 10.15.7
AndroidStudio Bumblebee
zsh

# shell内でリサイズするためにimagemagickをインストール
imagemagickのインストールはこちらを参考にさせていただきました?‍♂️
https://qiita.com/sowd/items/832594dd22d99aebc8a2

# shellの中身
“`
#!/bin/bash

# ライトモードに切り替え
adb shell cmd uimode night no

# ライトモード切り替えを待機
sleep 1

# スクショを撮ってPCのデスクトップに保存(日付をUNIXTIMEで取得)
DATETIME=`date +%s`
adb shell screencap

元記事を表示

Androidのスマホでの不具合はメーカーのせいかも?

Androidのスマホは、メーカー毎にその機種に最適化された(ようするにハックされた)Androidをつんでいます。

そこで、メーカーの一部は ~~ベンチマークでいい点を取る~~ ユーザーエクスペリエンスを良くするために、電力消費を抑えるためのギミックをコードしています。

そのギミック(消費電力最適化、ストレージ最適化など)のせいで、意図しないアプリの強制終了が行われているようです。

https://qiita.com/RandomScientist/items/deaaadd29c9bd5844c99

`Samsung`や`One Plus`などを筆頭として、前に投稿したSpotifyなど、様々なアプリで意図しない挙動が報告されています。機種変えやアプリ開発をする際の一助となれば幸いです。

具体的なメーカー名や不具合の報告、その対処法は下記のサイトなどでチェックできます。

https://dontkillmyapp.com/

そのうち私生活が一段落したらSamsung Galaxy TabのOS換装記事を書きたいと思います。

元記事を表示

【Android】PlayBillingLibrary を3.0→4.0にバージョンアップ&課金処理実装してみた

# はじめに
こんにちは。
PlayBillingLibraryのバージョンを上げる機会があったので備忘録として残しておきます。

[RevenueCat](https://www.revenuecat.com/)というツールを使ってアプリにサブスクリプションを実装しようとした際にPlayBillingLibraryがVer4.0に上がるみたく今まではVer3.0を使っていたがビルドすら通らなくなったのでもれなくPlayBillingLibraryもVer4.0に上げなきゃいけない事になりました。

## PlayBillingLibraryとは
Androidアプリ内で課金を実装するライブラリです。
簡単に言うと課金処理の際にGoogle Playとアプリを繋げてくれるやつ。

このライブラリは毎年バージョンアップが行われサポート期間は2年です。
2年経つと足切りされ課金ができなくなる?のでチェックしてみてください。

ちなみに2022年6月現在Ver5.0までリリースされています。

以下参考

https://developer.android.com/google/play/b

元記事を表示

コルーチンとチャネル入門#4

ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/04_Suspend)

# suspend関数の使用
Retrofitにはコルーチンに対するネイティブなサポートが提供されているため、それを使うことにする。`Call>`を返却する代わりに、今では`suspend`関数としてAPI呼び出しを定義する。
“`Kotlin
interface GitHubService {
@GET(“orgs/{org}/repos?per_page=100”)
suspend fun getOrgRepos(
@Path(“org”) org: String
): List
}
“`
その裏にある主な考えは、要求を実行するために`suspend`関数を使うときは、配下のスレッドがブロッキングされないことである。まさにそれがどのように動くか、少し後で説明する。
留意すべきは、今では`g

元記事を表示

jetpack composeでdrawableEndCompatを実装したい

# 初めに
今回は、`jetpack compose`でまだサポートしてない`drawableEndCompat`を実装していきたいと思います。

### 実装
まず、初めにお話ししたように`jetpack compose`ではまだ`drawableEndCompat`の実装をサポートしてません(そもそもするようになるのかは不安ですが…)
なので自作していこうと思います。
`compose`に少し触れてる人ならこれかなぁと予想はついてると思います。
では早速書いていきます

“`kotlin
ConstraintLayout() {
val (content, image) = createRefs()
Box(
Modifier.constrainAs(content) {
end.linkTo(image.start)
}
) {
Text(
text = “Text”,
modifier = Modifier

元記事を表示

事業フェーズごとにiOS/Androidエンジニアに求められるスキルやアウトプット

色々な事業フェーズに関わる中で、アプリエンジニアが関係者から何を求められていて、何をアウトプットすべきなのかが見えてきたのでまとめておきます。

# 前段

事業状況は0→1、1→10、10→100などの局面によって変化していくものです。
その事業の局面ごとに、アプリエンジニアが為すべきことや求められることというのは変化していくのではないかと私は思います。
もちろん、事業の形態や人員体制などによっても求められることやアウトプットは変わるものですが、そこはサブ要因として今回は踏み込まずに思うところを記載していこうと思います。

ちなみにこの記事は
https://qiita.com/yuukiw00w/items/1191c5afde8d3c9e4440
を書く中で、本人が何を気をつけたらいいかという観点だけじゃなく、周りが何を求めて何をアウトプットすべきかという部分も記載したほうがいいかなと思ったので書きました。
こちらの文章はどちらかといえば組織的にアサインする上で気をつけるべきことや、何を期待値とするべきかという部分に関わる話なので、人員体制を決定するような人が読むと参考になるかも

元記事を表示

カスタムROMってなに?

## 勉強前イメージ

自分でカスタムしたROM?

## 調査

### カスタムROM とは

そもそもAndroidはGoogleが開発したモバイルデバイス向けのOSになります。
オープンソースなので誰でも入手可能です。
誰でも入手できるソースコードを利用して世界中の人が開発したOSが `カスタムROM` と呼ばれるものになります。

ちなみにiphoneのOS、iOSはAppleによって開発されていますがオープンソースではないので
誰でも入手できる状況ではありません。

### カスタムROM はどこから取ってくる?

色んなサイトはありますが、有名なのは [LineageOS](https://download.lineageos.org/shamu) です。

### メリデメ

– メリット
– OSの変更ができる
– 古いスマホでも最新のOSを試すことが可能
– デメリット
– 保証がなくなる
– 失敗すると起動しなくなる可能性がある

それぞれありますがリスクは大きく、最初は中古のスマホなどを買ってきて行うのが良いかと思います。

## 勉強後イメージ

RO

元記事を表示

【Android】composeでdp, pxを変換する

# はじめに
jetpack composeで `dp to px` および `px to dp`の変換処理の例があまりなかったのでメモに書いておきます。
本記事はcomposeの“version: 1.2.0-beta03“の情報です。
APIは変更される可能性があるので適宜最新versionに置き換えてください。

# px to dp
“`kotlin
val widthPx = 16f
val density = LocalDensity.current
with(density) {
val dp = widthPx.toDp()
}
“`
# dp to px
“`kotlin
val widthDp = 16.dp
val density = LocalDensity.current
with(density) {
val px = widthDp.toPx()
}
“`

`Density`を取得することで、Densityに生えている`toDp()`, `toPx()`の関数が利用できるようになります。
**CompositionLocal*

元記事を表示

[Android] Material Design (Color編) 自分用メモ

Material Design 3というものができたそうですね。開発中にデザインの実装方法などググることはあっても体系的に学んだことはなかったので、復習も兼ねて、Material Design2から学びます。

## 歴史
2014年 Material Design
2018年 Material Theming
2021年 Material You
2021年にMaterial YouがMaterial Design3と呼ぶようになり、それに伴ってMaterial ThemingがMaterail Design2ということになったそうです。([参照](https://qiita.com/mkosuke/items/314242951766e413b4ab))

## Material Color
[こちらの公式](https://material.io/design/color/the-color-system.html#color-theme-creation)でいろいろ定義されているのでまとめます。
図案の公式のサイトを見ながらだとわかりやすいです。

名称|概要
—|—

元記事を表示

NCMBのFlutter SDKを使ってプッシュ通知を送信する(Android編)

NCMBのコミュニティSDK(公式サポートは提供されていません)としてFlutter向けのSDKを提供しています。Flutter SDKはiOS/Androidはもちろんのこと、Webなどでも利用できます。つまりスマートフォンネイティブの機能は提供していません。

NCMBのプッシュ通知機能は数多くの方に使われている機能でもあり、今回はFlutter SDKを使ってどうプッシュ通知機能を使えば良いのかを紹介します。まずはAndroid編です。

[ncmb | Dart Package](https://pub.dev/packages/ncmb)

## 利用するライブラリ

上述の通り、Flutter SDKにはネイティブ機能がありませんので、プッシュ通知で利用するデバイストークンを取得する機能がありません。そこで下記のライブラリを使います。

– [push | Flutter Package](https://pub.dev/packages/push)
– [flutter_local_notifications | Flutter Package](https://pub.

元記事を表示

OTHERカテゴリの最新記事