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

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

【Android】標準Spinnerを見やすくしたドロップボックス

Android標準のウィジェットSpinnerは便利ですが、ぱっと見で選択できることがユーザーには分かりにくい気がします。(SpinnerのUIカスタマイズ方法を私が知らないだけかも・・・)
Spinnerと同等の機能を持ち、見た目も選択可能なことがひと目でわかるドロップボックスを紹介します。

#ドロップボックスの外観
![dropbox_image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546646/922059df-8bb5-1ffa-653a-967aea612273.png)

#用意したサンプルプログラムの外観
![Screenshot_1641085032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546646/2aad1f8e-f099-f9d8-6b28-1818ab340baf.png)

#コード
さっそくコードの主要部分を紹介します。
ここではわかり易さを重視して必要な部分のコードの

元記事を表示

AMD CPU搭載PCでAVDのVMアクセラレーションを有効化する

# 目的
– AMD CPU搭載PCでAVDのVMアクセラレーションを有効化する。

# 環境
– PC:Ryzen 5 3400G, ASUS TUF B450M-PLUS GAMING
– OS:Windows10 Professional 21H2
– Android Studio 3.6.3

# 準備

– AMDのCPUでAVDのVMアクセラレーションを有効とするには、以下の条件がある。

* Android SDK Toolsのバージョンが26.1.1以降。
後述するWindows ハイパーバイザープラットフォーム(WHPX)を使う場合は27.3.1以降。
* x86ベースのシステムイメージを持つAVD。
* Windows10 Ver1803以降。
* 異なるVM(VMware, Virtual Box等)内では有効化できない。VMアクセラレーションを使用するAVDは別のVM内からではなくホストPCから直接実行すること。
* CPUはRyzen推奨。
– AMD CPU搭載PCの場合、AVDのアクセラレーションを行うには以下2つの選択肢が

元記事を表示

Android ビルド環境の切り分けをする

build.gradle の設定をして、表のような分類で

* (1) ビルドを切り分けする
* (2) 設定値を切り分けする(free と pro で分ける)

| | debug | staging | release |
| — | — | — | — |
| free | デバッグ用フリー版 | ステージングフリー版 | 本番フリー版 |
| pro | デバッグ用プロ機能版 | ステージングプロ機能版 | 本番プロ機能版 |

手元の環境

* Android Studio 2020.3.1
* gradle 7.0.3
* JDK 1.8
* Windows 11(21H2)
* Android SDK
* compile, target, min 共に 28

## (1) ビルドを切り分けする

プロジェクト作りたての場合を想定する。build.gradle(モジュール単位) > `buildTypes` は以下のような作りである。

`

元記事を表示

[Android]Installed Build Tools revision 31.0.0 is corruptedエラーの対策

概要

以下のエラーが出た時の対応策

“`
Android Studio error “Installed Build Tools revision 31.0.0 is corrupted”
“`

現象

このエラーはGradleの設定が以下の時にBuildすることで出るようです。

“`gradle
compileSdkVersion 31
buildToolsVersion “31.0.0”

defaultConfig {
applicationId “io.github.kurramkurram.bubblememo”
minSdkVersion 30
targetSdkVersion 31
versionCode 1
versionName “1.0”

testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner”
}
“`

原因

bui

元記事を表示

FlutterでAlgorithm HmacPBESHA256 not availableのトラブル

## Algorithm HmacPBESHA256 not availableのトラブル

#### 参考にしたサイト
https://note.com/iga34engineer/n/ndbe247c8e23a

のサイトを参考にしながら、keyを作成する。
作成されたkeyのパスワード、エイリアス名、jksファイルの場所をkeystore.propertiesファイルに書き込む

keystore.propertiesファイルの作成など、リリースビルド全般については、以下を参考にした。

https://qiita.com/kasa_le/items/d23075d817f42e869778

build.gradleはreleaseのみにする。

とりあえすこれでビルドは通った。

すみません、ほぼメモです。

元記事を表示

Glanceであそぼ

# はじめに
こんにちは。どすこいです。
今回は先日リリースされた、Glance 1.0.0-alpha(ComposeでAppWidgetを作れるやつ)で遊んでいきたいと思います。

Glanceの詳細に関してはこちらの記事をご覧ください。

https://blog.kyash.co/entry/2021/11/19/125319

# 環境
Kotlin 1.6
AGP 7.1.0-beta05

# 1.準備
まずはbuild.gradle(app)に依存関係を書いていきます。

https://developer.android.com/jetpack/androidx/releases/glance

“`Groovy:build.gradle(app)
dependencies {
implementation “androidx.glance:glance:1.0.0-alpha01”
implementation “androidx.glance:glance-appwidget:1.0.0-alpha01”
}

android {
buil

元記事を表示

Android端末”だけ”でChrome Dev Toolを使う方法(知ってると便利)

Android端末でChromeのデベロッパーツールを使いたいとき、USBデバッグでパソコンから操作する方法が一般的に有名です。
Chrome DevToolをスマホだけで使う方法を紹介します。出先でパソコン開くスペース無い!ってときに参考に…
![Screenshot_20211230_131913.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/bfc70d68-90e4-d884-1d03-18da8b8cd8c5.jpeg)

## 概要
Chromium系のカスタムブラウザ**Kiwi Browser**を使うだけ!

https://play.google.com/store/apps/details?id=com.kiwibrowser.browser

kiwi browserは拡張機能をAndroidで動かす際に使うアプリで有名ですが、実はChrome DevToolが標準で搭載されています。
### 使いみち
Webサイトで気になるアニメーションとかあったら調べたくなりま

元記事を表示

Process ‘Gradle worker Daemon 1’ finished with non-zero exit value 1が出た

# 概要
Process ‘Gradle worker Daemon 1’ finished with non-zero exit value 1が出た場合の対処法

### 実行コマンド
“`
$ ./gradlew –stop
“`

### 原因
Gradleデーモンを複数起動していたことが原因

元記事を表示

モバイルサイトのデザイン・動きをお手軽に実機とかで確認したーい

##はじめに
モバイルサイトを作っててお手軽に動作確認するには、chromeとかsafariとかの開発機能を使いますよね。
でもアプリのwebViewでの表示をちゃんと確認したい。ならブラウザだけでは足りないよね。実機でちゃんとなるかは不明だし。

##こうする
#####iOSシミュレータで
自社アプリならソースがあるだろうから、iOSシミュレータ向けにビルドして、localhostでサイトを動かして、確認しよう。iOSシミュレータのアプリから、localhost指定でアクセスできるよ。
webサーバーはご自由に。MANPとか色々あるよ。
#####androidエミュレータで
androidエミュレータからはlocalhost指定ではアクセスできないようで、パソコンのIPアドレスを指定すればアクセスできるよ。
#####iOS/Android実機で
IPアドレスを指定すればiOS/androidの実機からでもアクセスできるよ。これで完璧だね。ポートを開けるのを忘れずに。
##最後に
iOSシミュレータでlocalhost指定以外は、まあ常識なんだけど、なかなか気づかないので、記事に

元記事を表示

AndroidアプリでARしてみる

# この記事について
~~全く埋まらない社内アドベントカレンダーを埋めるべく、~~UnityでARアプリを作成しました。

# バージョン
参考ページよりバージョンを上げるとエラーが多すぎて対応できなかったので、参考ページとバージョンを合わせています。
– Unity 2019.4.34f1
– ARCore SDK for Unity v1.16.0

# 作ってみる
## プロジェクト作成
– 3Dテンプレートでプロジェクトを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/de8d116a-71f8-62de-6a6d-8b3238a297b9.png)

## 必要パッケージのインストール
[Window] -> [Package Manager]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/a4641992-c72f-c7fb

元記事を表示

[Flutter 環境構築] Android toolchainのエラーを解消する方法

Flutter の環境構築を行なっている際、Android Studio をインストールし、
“`flutter doctor“`を実行して確認した際にエラーが出てしまう。。。

## 問題のエラー文
“`
$ fflutter doctor -v
[✓] Flutter (Channel master, 2.9.0-1.0.pre.207, on Ubuntu 20.04.3 LTS 5.10.76-linuxkit, locale en_US)
• Flutter version 2.9.0-1.0.pre.207 at /usr/local/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 7addb91364 (10 hours ago), 2021-12-28 04:54:11 -0500
• Engine revision 01d19ceef4
• Dart version 2.16.0 (build

元記事を表示

DockerでFlutterの環境構築メモ

## 開発環境
Docker Engine 20.10.11
macOS Monterey 12.0.1

## Dockerfile と docker-compose.yml と envファイルの作成

### Dockerfile
“`Dockerfile
# build時に使用するARGを定義している部分
ARG ubuntu_version
ARG timezone
ARG web_server_port
ARG app_code_path_container

# https://hub.docker.com/_/ubuntu/
FROM ubuntu:${ubuntu_version}

ENV DEBIAN_FRONTEND=noninteractive
ENV LC_ALL=ja_JP.UTF-8
ENV LC_CTYPE=ja_JP.UTF-8
ENV LANGUAGE=ja_JP:jp
ENV TZ $timezone
ENV WEB_SERVER_PORT $web_server_port
ENV APP_CODE_PATH_CONTAINER $app_cod

元記事を表示

Android端末でROS1/ROS2を動かす(Rvizもあるよ!)

# はじめに

事の発端はちょうど1年前,[ROS/ROS2 Advent Calendar 2020 3日目のMeRT(ルット)さんの記事][1]だった.

どうせならROS2でやってみようと思い,UserLand上のUbuntu 18.04にROS2 Dashingをインストールしたところrqt_graphとrqt_plotは動いたので,[micro-ROSのデモに絡めてみた][2].この段階ではrqt系は動いたものの,OpenGLがサポートされていないためrvizやgazeboは動かなかった.

それから程なくしてROS2 DashingがEOLとなり筆者のメイン環境もROS2 Foxyへ移行を済ませた頃,Android端末上でROS2 Foxyを動かせないものかと考えるようになった.そのためにはUserLand上のUbuntuが20.04である必要があったが,UserLand上にインストールできるUbuntuは18.04のままという状態が続いた.

そんな中で出会った新たな選択肢が[Termux][3]であった.

# 記事概要

Android端末上にROS環境(ROS2

元記事を表示

JetpackCompose KeyBoard Options と Actions

# JetpackComposeのKeyBoard
TextFieldのパラメータでKeyboardの種類と完了時のActionを設定できる。
細かく把握してなかったので、UIの差異をまとめておく。

## KeyboardOptions

“`
class KeyboardOptions constructor(
val capitalization: KeyboardCapitalization = KeyboardCapitalization.None,
val autoCorrect: Boolean = true,
val keyboardType: KeyboardType = KeyboardType.Text,
val imeAction: ImeAction = ImeAction.Default
)
“`
KeyBoardの設定は上記クラスを使用して行う。

### KeyBoardType

| KeyBoardType | 説明 | 備考 |
| – | – | – |
| Text | 通常のキーボードを表示するIME |

元記事を表示

UriからByteArrayに変換したい

#やりたいこと
サーバーに渡せるようにUriからbyteArrayに変換してMultiPartBodyにする前準備をしておきたい

###コード
“`decoder.kt
val imageStream: InputStream? = context.contentResolver.openInputStream(imageUri)
val bitmap = BitmapFactory.decodeStream(imageStream)
val byteArrayOutputStream = ByteArrayOutputStream()
val compressFormat = when (mimeType) {
MediaType.Jpeg -> {
Bitmap.CompressFormat.JPEG
}
MediaType.Png -> {
Bitmap.CompressFormat.PNG
}
else -> {
throw IllegalStateExceptio

元記事を表示

Dagger Hiltでよくハマるミス

Dagger Hiltでよくハマるミス

“`
appモジュール -> moduleA -> moduleB
“`

という依存関係で、

“` kotlin
// moduleB
interface Hoge
class HogeImpl : Hoge

@Module
@InstallIn(SingletonComponent::class)
abstract class BModule {
@Binds
abstract fun provideHoge(impl: HogeImpl): Hoge
}

// moduleA
class UseCase @Inject constructor(
private val hoge: Hoge
) {
}

// appモジュール
class HogeViewModel @Inject constructor(
private useCase: UseCase
) : ViewModel() {
}
“`

こんな感じのDIをしていた場合に、appモジュールのbuild.gradleでmoduleBへのimpl

元記事を表示

PopupMenu の要素を動的に追加する

わざわざ記事にすることでもないかもしれないですが、 PopupMenu を使った際に menu リソース以外からも要素を作成する方法の備忘録を自分ように残します。

## やり方
以下のコードの `popupMenu.menu.add(“文字列”)` を行うことで好きな数だけ要素を増やすことができます。

“`
val popupMenu = PopupMenu(this, target)
popupMenu.menu.add(“テスト1”)
popupMenu.menu.add(“テスト2”)
popupMenu.menu.add(“テスト3”)
popupMenu.show()
“`

元記事を表示

【Android】 Flipperで簡単にAPIモック環境を作成する

## はじめに
Facebookが作ってる[Flipper](https://fbflipper.com/)というデバッグツールで、簡単にAPIモック環境を作成することができたのでまとめておきます

Flipper導入は公式サイトを参考にNetwork Pluginを設定するとネットワークのトラフィックが参照できるようになります。

– Flipper
– https://fbflipper.com/docs/getting-started/android-native/
– Network Plugin
– https://fbflipper.com/docs/setup/plugins/network/

## モックサポートを有効にする
FlipperのNetwork PluginにはOkhttp統合用のFlipperOkhttpInterceptorが用意されています。
そのFlipperOkhttpInterceptorには、isMockResponseSupportedというパラメータがあり、デフォルトだと無効(false)なのですが、こちらを有効(true)に設定

元記事を表示

UiAutomatorで表示しているブラウザのURLを取得する

## 結論

“`kotlin
uiDevice.findObject(UiSelector().resourceId(“com.android.chrome:id/url_bar”)).text
“`

## 概要
UiAutomatorを利用した検証で遷移したブラウザページのリンクを取得したい
結論項にある方法で取得が可能

## 参考
https://stackoverflow.com/questions/48112983/how-to-verify-a-chrome-tab-url-by-using-ui-automator

元記事を表示

[Rails]Webアプリケーションしか作った事ない僕が、ネイティブアプリケーションを作りたい

#はじめに
初学者の私が、2ヶ月でRailsを学びWebアプリケーションを作れるようになりました。
IOSでリリースをするに至って
まずどのような知識が必要かをまとめる記事になっています。

##React Native

React Nativeは、iPhoneとAndroidどちらでも動かすことができる開発用フレームワークです。
JavaScriptで開発することができるため、JavaやSwiftが書けないエンジニアでも、React Nativeを使えばアプリ開発ができます。
React Nativeの開発言語は、JavaScriptです。そのため、JavaScriptのコードを書ければAndroidとiOSの両方で開発が可能になるフレームワーク

“`
Reactに慣れている人にとっては学習コストの低いReact Native
ネイティブエンジニアには、逆に学習コストが高くなると考えられます。
“`
##Flutter

FlutterはGoogleが作ったモバイルアプリ用のフレームワーク。
「Dart」という言語を使って開発をしていきます。

“`
モバイルアプリ開発

元記事を表示

OTHERカテゴリの最新記事