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

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

THETA X で衛星測位の結果を利用する方法

## はじめに

リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA V, RICOH THETA Z1, RICOH THETA Xは、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

RICOH THETA Xは、本体のみで衛星測位が行えるようになりました。
今回は、THETAプラグインから、この測位結果を取得し利用する方法の初級編を紹介します。

## 今回作成したサンプルの概要

RICOH THETA Xでは、Androidに予め用意されているサービスを利用して、緯度、経度などが取得できるのですが、取得できる情報の中に、時刻があります。

RICOH THETA X は、これまでのTHETAと同じように、以下2通りの方法で自動の時刻合わせが行

元記事を表示

[Android]高速に何度も画面遷移する際にクラッシュする[Unable to add window]

# エラー内容
繰り返し画面の遷移を行っている際に時々アプリのクラッシュが起こっていた。
エラー内容は下部。
“`
android.view.WindowManager$BadTokenException: Unable to add window”
“`

# 解決方法
調べたところContextの拡張関数でAlertDialogを作成していた場面でエラーが起きていた。
ダイアログ生成時に呼び出し元のContextが終了していると起きるらしく、そのため繰り返し高速に画面遷移を行っていた場合に起きていた。

なので作成した拡張関数内で
“`kotlin
fun Context.function(){
if(this is Activity){
if (this.isDestroyed || this.isFinishing) {
return
}
}
}
“`
としてやれば修正された。

元記事を表示

MacにReact Nativeの開発環境を構築する方法

MacOS に React Native の Android アプリを開発する環境の構築方法を紹介いたします。

# 概要

案件で React Native の Android アプリを開発する環境が必要となったため、メモ用として記事にしました。
この記事では MacOS 12.4のM1チップ, Android Studio Chipmunk 2021.2.1 を使用しております。
また、コマンドライン引数に与えるユーザー名は適宜読み替えてください。

# 1. Homebrew のインストール

[Homebrew](https://brew.sh/index_ja) とは macOS 用のパッケージマネージャーのことで、
今回は Watchman、JDK のインストールで使用します。
下記のコマンドを実行して Homebrew をインストールします。

“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

元記事を表示

開発と本番で叩くAPIURLを変えたい

# 初めに
今回は、よくある開発と本番で叩くAPIのエンドポイントを変更したいときの備忘録を残しておきたいと思います
### 本文
まず、endpointをどこに置くか問題ですが、これは一般的に`build.gradle`に書かれることが多いので、今回はそれを前提に書いていこうと思います。
“`gradle
buildTypes {
debug {
buildConfigField(
“String”,
“API_ENDPOINT”,
“\”https://api_endpoint/\””
)
}
release {
buildConfigField(
“String”,
“API_ENDPOINT”,
“\”https://ap

元記事を表示

Android Roadshow Day 1 メモ

# 概要

ちょっと今さら感あるけど 2022年6月15日に行われた [Android Roadshow Day 1](https://developersonair.withgoogle.com/events/roadshow_day1_online) の内容で気になったところをメモしておく。
`Android 13`、`Android Studio`、`Jetpack Compose` あたりかなあ。

# What’s new in Jetpack

– アーキテクチャ
– Room
– SQLite
– Kotlin Symbol Processing(KSP) 安定版
– @Database
– @AutoMigration
– Paging
– Rx、Guava サポート
– ロード改善
– Paging Codelab
– Navigation
– Navigation Component と Jetpack Co

元記事を表示

Jetpack ComposeのTextField基本的な機能・デザイン関係まとめ

# TextFieldデザインまとめ

## デフォルトのデザインが

ちょっとAndroidアプリを作る用事があってJetpack Composeを使ったんですが、TextFieldを使ってみてデフォルトのデザインが~~気にくわない~~アプリ上での配置にそぐわない気がしたので、弄った知識をメモっておくことにしました。

## 環境

– Intellij IDEA 2022.1.2 Community Edition

“`gradle:build.gradle(:app)
dependencies {
/*中略*/
implementation ‘androidx.activity:activity-compose:1.3.0’
implementation ‘androidx.compose.ui:ui-tooling:1.0.0’
implementation ‘androidx.compose.material:material:1.0.1’
}
“`

## 基本

### TextField

シンプルなテキストフィールドです。あの下線

元記事を表示

【Android】拡大・縮小させる!ZoomControlsについて

# はじめに
Androidには拡大ボタンと縮小ボタンを表示するZoomControlsというViewが存在します。
拡大ボタンと縮小ボタンを表示するだけであり、どのくらい拡大・縮小させるかは自前に実装しないといけません。

# ZoomControlsとは
ZoomControlsはLinearLayoutを継承しています。
また、子Viewとして2つのZoomButtonが存在し、
2つのZoomButtonはそれぞれズームインボタンとズームアウトボタンとして使用されています。

それぞれ
“`
.setIsZoomInEnabled(false)
.setIsZoomOutEnabled(false) 
“`

で無効化することができます。

また、
“`
.setOnZoomInClickListener
.setOnZoomOutClickListener
“`
で クリックした時に呼ばれるコールバックインターフェースを設定することができます

元記事を表示

Android TextViewでOS標準のコピーを使用できるようにする方法

今回はTextViewでOS標準のコピーを使用できるようにする方法です。

EditTextでは特に設定などせずに標準のコピー、ペーストができるので、意識したことないのですが、TextViewでは設定しないとコピーができないみたいです。

xmlに設定を追加するだけでコピー可能になります。

“`
android:textIsSelectable=”true”
“`

こちらをTextViewの設定に追加するだけです。

以上です。

元記事を表示

【Flutter】スプラッシュ画面を実装する方法

## 初めに
スプラッシュ画面とは以下の画像のようにアプリを起動して最初に数秒間表示される画面のことです。スプラッシュ画面ではアプリのロゴなどを表示させることが多いです。基本的にはユーザが操作できないようになっています。

## パッケージの準備
まずは [flutter_native_splashパッケージ](“”) を pubspeck.yaml に記述し、Pub get します。

“`yaml: pubspeck.yaml
dependencies:
flutter:
sdk: flutter
flutter_native_splash: ^2.2.7
“`
これでパッケージの準備は完了です!

## 実装

通常のパッケージであればページでインポートして使用するのですが、スプラッシュ画面の実装は通常のパッケージとは異なり、「 pubspeck.yaml 」ファイルを変更することで実装できます。
今回はiOSのみの実装を行います。

“`yaml:pubspeck.yaml
dev_dependencies:
flutter_test:
s

元記事を表示

Android13のPhoto picker(写真選択ツール)

# :star2: はじめに

Android 13から以下のような、写真/動画選択時の新しいUIであるPhoto Picker(写真選択ツール)が追加されました。

| 単一選択 | 複数選択 |
| —- | —- |
| | |

[公式ドキュメント](https://developer.android.com/about/versions/13/features/photopicker) には `startActivit

元記事を表示

【Coroutinesガイド】IntelliJ IDEAを使ったFlowのデバッグ – チュートリアル

※ソース記事は[こちら](https://kotlinlang.org/docs/debug-flow-with-idea.html)
このチュートリアルでは、IntelliJ IDEAを使ってKotlin Flowを作り、デバッグする方法をデモする。
このチュートリアルは、読者が[コルーチン](https://kotlinlang.org/docs/coroutines-guide.html)と[Kotlin Flow](https://kotlinlang.org/docs/flow.html#flows)の概要を事前の知識を持つことを想定している。

::: note
デバッグは`kotlinx-coroutines-core`バージョン1.3.8以上で動作する。
:::
# Kotlin Flowの作成
遅いエミッターと遅いコレクタを持つKotlin [flow](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/flow.html)を次のよ

元記事を表示

【Flutter】Widget TestでKeyで探したWidgetのテキストを抽出する。

こんにちは。

個人でアプリ開発をしているYuKiOです。
アプリを13本リリースしています。

元記事を表示

【Flutter】WidgetTestでレイアウトを実機やシミュレーターで表示して確認する方法

![rakugo_shimote.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228439/2242f86b-5b5a-e397-6f22-d6b16e464794.jpeg)

一度でいいから見てみたい、

Widget Testのレイアウトが表示されるところ、

どうも個人でアプリ開発をしているYuKiOです。

さて、Flutterの自動テストには「**Unit Test**」、「**Widget Test**」、「**Integration Test**」と3つありますが、

その中で「Widget Test」は、主にアプリのUIを確認するために用いられると思います。

そこで、こんな問題に遭遇したことありませんか?

## WidgetTestで困ること
「テストは通過しているけれど、これ本当に正常に表示されている?」
「タップ処理をしているけれど、Widgetが見つからないでエラーになる。あれ?Widgetが表示されているはずなんだけど・・・Keyが違うのかな?」

のように、Widge

元記事を表示

【Coroutinesガイド】IntelliJ IDEAを使ったコルーチンのデバッグ – チュートリアル

※ソース記事は[こちら](https://kotlinlang.org/docs/debug-coroutines-with-idea.html)
このチュートリアルでは、Kotlinコルーチンを作りIntelliJ IDEAを使ってデバッグする方法をデモする。
チュートリアルは、事前に[コルーチン](https://kotlinlang.org/docs/coroutines-guide.html)の概要の知識があることを想定している。

::: note
デバッグは`kotlinx-coroutines-core`バージョン1.3.8以上で動作する。
:::
# コルーチンの作成
1. IntelliJ IDEAでKotlinプロジェクトを開く。無い場合は一つ[作成](https://kotlinlang.org/docs/jvm-get-started.html#create-an-application)する。
1. `src/main/kotlin`内の`main.kt`を開く。
`src`ディレクトリには、Kotlinソースとリソースが含まれる。`main.kt`ファイルに

元記事を表示

[Android]デバイス上で表示されているViewのサイズを取得する

# はじめに
各デバイスサイズ毎に表示されているViewの大きさを取得して比較したかった際にかなり躓きました。
やりたかったこととしてはデバイス毎にScrollViewの全体のサイズと表示されている領域の高さの差分を取得してスクロールできる領域があるかどうかを確認するといった内容です(もっとスマートなやり方があれば知りたい……)

ViewのIDを何度も確認したりDataBinding部分やgetHeightの中身を読んでも解決せず……
何度かデバッグモードで動かしているうちに見当がついて調べたところ解決しました。

# 課題
自身の環境ではレイアウトはxmlでConstraintLayoutを使用して記述しており、DataBindingでFragmentから参照しています。
そこでViewのサイズを下記コードで取得しようとしたところ0で返ってきてしまいました。
“`kotlin
binding.viewId.height
“`

不思議に思い一度デバッグで確認していたところViewが生成されるより前に取得を試みているようです。

# 解決方法
viewTreeO

元記事を表示

gdbのSJISソースの文字化けを直す方法

この文書は、ソースコードをShiftJISで書いたC/C++のプログラムを-gオプションを付けてgccでコンパイルして出来たバイナリプログラムをgdbに読み込ませてデバッグする際にリスト表示が文字化けする現象を直す方法を書きます。

不具合の原因を探るためにgdbのソースコードを読みました。
gdbのソースは巨大で非常に複雑です。ビルドにも物凄く時間が掛かります。configureですら大変な時間がかかります。
マクロスイッチ次第では、printf すら #define で別のものに変更される場合があり、そのマクロスイッチの起源となる autoconf (configure) の複雑さも絡んで、不具合の原因を探るにはコードを読むだけでは無理が有り、現実的には実際にコードをいじって「printf デバッグ」するしかないと思いますね。
gdbの文字化けという大変重要な問題、何十年間(?)も放置されてきたことが何よりの証拠です。
何かというと
「ShiftJISは古い、utf8にすれば解決する」
という声が大きいですが、そうは思いません。
utf8はサイズが大きいので無駄ですから。
最近エコ

元記事を表示

DialogFragmentのUITestの書き方

# 何をしたいか
DialogFragmentのUITestを記述する際にtestRuleにActivityを渡してダイアログ表示までの遷移部分を記述するのがどうにも面倒でダイアログだけを最初から開いて確認する方法がないか探していたところ解決したのでその共有記事です。

公式記事はこちら
https://developer.android.com/training/basics/fragments/testing?hl=ja

今回は最小の実装でDialogFragmentを対象として記述していきますので詳しいところは上記記事参照です。
testにはEspressoを使用しています。

# 方法
まずapp配下のbuild.gradleに下記を追加します。

“`gradle
dependencies{
debugImplementation ‘androidx.fragment:fragment-testing:${version}’
}
“`

次にテストメソッドで
“`kotlin
@Test
fun test(){
val scenario = launc

元記事を表示

可愛い無線タブレットスイッチ と小型モジュール「XBee」

## < ブライダル用 Wifi リモートスイッチ > ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/0b185f28-4816-76f6-0cfc-3e12cdcadfff.png) ### 2010 初めてのAndroidアプリ当時タブレットが安価になりデモ用に試作しました。 ![AndroidシュミレーターWelcameBaloon.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/47b1a743-8364-f9a4-21b4-f6c813ce35ef.jpeg) ## IoTプロトタイプの無線化におすすめ! 無線通信規格ZigBeeに対応した小型モジュール「XBee」を使ってみよう https://codezine.jp/article/detail/9773 https://bokunimo.net/bokunimowakaru/std-zigbee.html #

元記事を表示

Flip Tables を使ってみる

例えば、ログに、List

“`kotlin
println(list)
“`

このように表示されているのが、

“`
I/System.out: [Item(exchange=quoine, pair=bchjpy, price=127989.3), Item(exchange=bitflyer, pair=btcfxjpy, price=1073351.0), Item(exchange=kraken, pair=btcjpy, price=1046576.0), Item(exchange=bitflyer, pair=btcjpy, price=1038000.0), Item(exchange=quoine, pair=btcjpy, price=1035870.94), Item(exchange=kraken, pair=ethjpy, price=91402.0), Item(exchange=quoine, pair=ethjpy, price=90595.82), Item(exchange=kraken, pair=xrpjpy, pri

元記事を表示

【Android】RecyclerView内のEditTextに入力した文字をスクロール時も保持

# 概要
RecyclerView内にExitTextを配置した際、テキスト入力後スクロールを繰り返すと入力したテキストが保持されない事象が発生。

# 対策
テキストリストを定義し、その中で保持。`EditText`の`Listener`は複数回定義されないように、`onBindViewHolder`内ではなく、`ViewHolder`内で定義しておく。

# コード
リストアイテム。`EditText`を配置。
“`list_item.xml


“`

メインレイアウト。`RecyclerView`を配置。
“`activity_main.xml

元記事を表示

OTHERカテゴリの最新記事