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

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

Android 端末で VPS に SSH 接続する

## 前提

* VPS が利用可能な状態であること

## 環境

* Termux
* Publisher: Fredrik Fornwall
* Version: 0.101
* Android
* Version: 12

## 実施

1. Google Play ストアから [Termux](https://play.google.com/store/apps/details?id=com.termux&hl=ja&gl=US&pli=1) をインストール
2. Termux を起動
3. 以下コマンドを順に実行

“`bash
$ pkg update
$ pkg install openssh
$ apt-get update
$ apt-get upgrade
$ ssh @
“`

元記事を表示

AAudioを簡単に使う方法

 当方は今年の4月~、Androidスマホアプリのプログラミングに着手し、年明けにGooglePlayにリリースできるところまで漕ぎつけた。この開発を通じて、サウンド系やシューティングゲーム系アプリを、Android系のスマホ(GooglePixelなど)で作る場合、AAudioというAPIが必須となることがわかった。いわずもがな、iOS系のスマホ(iPhone)では不要だ。

 さて、AAudioとは、音の発音遅延を数十m秒レベルに短縮(低レイテンシ化ともいう)するものであり、(遅きに失した感はあるが)Androidバージョン8から導入された。これを使うにあたり、AAudioのテンプレートとでもいうサンプル(oboe)が公開され、これを下敷にすれば、当方のようにアプリ系プログラム初挑戦者でも、低レイテンシのアプリが楽に作れてしまう。

 このコラムでは、これからAndroidに挑戦される方に向けて、AAudioの簡単な使い方をまとめた。基本マニュアルは、やはりGoogle純正のサイトを教科書にした方がよい。ここには、アプリ開発ツールであるAndroidStudioのダウンロードの仕方

元記事を表示

UnityのAndroidビルドでAPIレベル31にしたらGradle地獄だった話

![スクリーンショット 2022-11-28 23.50.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72960/87726bf8-2669-0b39-c4f7-e1c7bfd40e1a.png)
いやなダイアログだ。思わずため息が出る。Unity Android開発者は何度このダイアログに悩まされることになるのだろう。
## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## [前回](https://qiita.com/warapuri/items/9f9b4e293bf52c7cd6fd)のあらすじ

リリースだけ起こるバグに遭遇したが、ProGuardの難読化が原因だったことがわかった。
proguard-user.txtに追記して、難読化を回避することでなんとかProGuardの罠を潜

元記事を表示

AndroidでTextViewを点滅(blink)

# Androidでテキストの点滅って・・・簡単じゃなかった
今日、お客さんから
> 「ここの文字もっと大きくして、点滅させて目立たせたいんだよね・・・」

と言われたので、たぶん、TextViewのプロパティを1箇所ポチってtrueにすればできるんじゃないか・・・てノリで探してみたが・・・

**あれ? ない・・・**

blinkとかが付く名前のプロパティが無いのである。えー、文字の点滅もできないの?Androidでどうやってやるんだろう?と色々調べてみました。
# Animationを使う
どうやら、AndroidではAnimationという仕組みを使わないといけないらしいです。
参考URL
本家 Android developer [アニメーションの概要](https://developer.android.com/training/animation/overview?hl=ja)
本家 Android developer [アニメーション リソース](https://developer.android.com/guide/topics/resources/animation

元記事を表示

UnityのAndroidリリースビルドだけ起こったバグの話

## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## リリースビルドだけ起こるバグ

UnityのAndroid版ゲームのビルドを作っているとき、Debugでは問題ないのだが、Releaseでビルドしたら進行不能バグに遭遇した。
logcatで内容を見てみると、いろんなことで以下の例外が出ている。

“`
E/Unity: AndroidJavaException: java.lang.ClassNotFoundException:
“`

「ClassNotFoundException」つまり、そのクラスが見つからないということ。しかし該当のファイルは存在するし、そもそもDebugでは問題なく動いている。

## 問題の洗い出し

どういうことかと調べたら、どうやら「ProGuard」という難読化ツールが名前を変更したから、らしい。
しかしそもそも「ProGuard」なんて

元記事を表示

AndroidでViewBindingを使ってみる

# ViewBindingとは・・・?なんじゃんねぇ?
AndroidではLayout xmlとJavaかkotlinのソースが別々で、Layout xmlでは各Viewにidを振ります。
“`xml
android:id=”@+id/xxxbutton”
“`
それをJavaかkotlinのソース側から
“`kotlin
val button = findViewById(R.id.xxxbutton)
“`
といった風に参照します。AndroidではkotlinだとViewBindingという方法が使えます。

参考:
公式Android developers [ビューバインディング](https://developer.android.com/topic/libraries/view-binding)
# ViewBindingのメリットは?
findViewById と ViewBindingを比較した場合のメリットは
* null の安全性が高まる。
* 無効なビュー ID によって NullPointerException が発生することがない。findView

元記事を表示

【Jetpack Compose】変数宣言の方法とViewを更新する方法

## 概要
Jetpack Compose を使う上で基本となる、 View の状態を表す変数の宣言方法とそれを使った View の更新方法について説明します。

詳しい仕組みについては他の方が書かれていますので、あくまで個人的な備忘録として残したいと思います。

## 環境
Android Studio version: Android Studio Dolphin 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1

## 内容
Jetpack Compose を使って作成した View は Compose によってその状態を常に監視されており、状態が変化すると変化した部分を再描画する処理が行われます。
これを再コンポーズといい、Jetpack Compose で作成した View を更新する手段となっています。

View の状態監視には “`State“` 型または “`MutableState“` 型の変数が用いられます。

この変数の宣言方法は大きく分けて3パターン存在し、定義方法に応じて V

元記事を表示

【kotlin】CoroutineContextとは(自分用メモ)

# はじめに
今回は 前回に引き続きCoroutine内のCoroutineContextについて勉強したものを自分用のメモがわりに記事にしていきます

# CoroutineContextとは
CoroutineContext とは、コルーチンの状態を表す値の集まりの事。
“Job”や “CoroutineDispatcher” などの要素を使い動作を行うことができます。

要素を以下にまとめました

# CoroutineContext要素表
|要素|内容|
|:—|:—|
|job|コルーチンのライフサイクルを制御する|
|CoroutineDispatcher|適切なスレッドに処理を送信する|
|CoroutineName|コルーチンの名前、デバッグに役立つ|
|CoroutineExceptionHandler|キャッチされない例外を処理する|

# 参考
[図で理解する Kotlin Coroutine](https://qiita.com/kawmra/items/d024f9ab32ffe0604d39)
[Developers](https://develop

元記事を表示

AndroidでRecyclerViewの縦方向の自動拡大、縮小

# RecyclerViewの上下にViewを挟んだ場合のRecyclerViewの縦方向のサイズ
RecyclerViewが真ん中にあります。その上下にView(例えばTextView)を配置して、そのViewのvisibilityをView.GONEにした場合、RecyclerViewの縦サイズが自動拡大するかどうかをやってみました。

例えば、こんな画面を作ります。

真ん中がRecyclerView。
RecyclerViewの上にTextViewを2個配置。
RecyclerViewの下にTextViewを2個配置。
レイアウトエディタで見ると、こうなっています。
![Screenshot_20221127_204957.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

スマートウォッチをリマインダ代わりにバイブレーションさせる

題名みても、よくわからないような気がしますが、やりたいことは、普段つけているスマートウォッチ「Xiaomi Mi Band 3」に、自分で好きなメッセージを、自分の好きな時に通知して、スマートウォッチをバイブレーションさせます。
で、特にXiaomi Mi Band 3である必要はなく、一般的なスマートウォッチでよいです。
私は、LINEとXiaomi Mi Band 3を連携させているので、LINE通知が来ると、Xiaomi Mi Band 3がバイブレーションするようになっていますが、LINEとは関係なく、自分で好きなメッセージを、自分の好きな時にバイブレーションさせようというのが今回の趣旨です。
対象のスマホはAndroidです。

もろもろのソースコードは以下のGitHubに上げてあります。

poruruba/NotificationManager

https://github.com/poruruba/NotificationManager

# 対象のスマートウォッチ

適用可能なスマートウォッチは、アプリ連携できるアプリを選べるスマートウォッチです。
おそらく、たいて

元記事を表示

INMO AIRの開発者向けオプションを有効にする

INMO AIRは、それ単体で動作するスマートグラスの中でも軽量で普通のメガネの見た目にかなり近く、一般的なメガネ屋さん(筆者はメガネスーパーを利用しました)で処方レンズに変えることができるデバイスです。
通常のAndroidの機能は隠蔽されていますが、開発者向けオプション(Developer options)を有効にすることで、(非公式ですが)通常のAndroid 10デバイスのように開発することが可能です。

![処方レンズを取り付けたINMO AIR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43450/65a38c51-a1cc-ad24-b7bc-74206a36335f.jpeg)

## 注意事項

本手順は、公式に提供されているものではなく、操作ミスなどにより通常の機能が利用できなくなる可能性があります。何らかの不具合が発生しても対応できませんので、自己責任で操作を行ってください。また、開発元や販売元に問い合わせることもご遠慮ください。

## 手順

1. まず、本体の言語を英語に変更しま

元記事を表示

JetpackComposeでSnackbarの実装方法

JetpackComposeの知識を深めるために、今回はSnackbarを実装を試してみたいと思います。

# リファレンス

https://foso.github.io/Jetpack-Compose-Playground/material/snackbar/

# 実装方法

“`SnackbarView.kt
@Composable
fun SnackbarView() {
Column {
val snackbarVisibleState = remember { mutableStateOf(false) }
Button(modifier = Modifier.padding(16.dp),
onClick = { snackbarVisibleState.value = true }) {
Text(“スナックバー表示”)
}
if (snackbarVisibleState.value) {
Snackbar(

元記事を表示

Androidで設定画面を作ってみる

# Andoroidでシステム設定のような設定画面を作ってみる
Androidのアプリで設定画面を持っているものが有ります。AndroidX Preference Libraryを使って、Andoroid OSのシステム設定のような設定画面をアプリ内に作ってみましょう。

参考URL
本家Android develpers [設定](https://developer.android.com/guide/topics/ui/settings?hl=ja)
# どんな設定画面を作るか?
とりあえず、こんな設定画面を作ってみましょう。

設定値として色々な型が可能ですが、
* 文字列(何でも入力可)
* 文字列(数値のみ)
* リスト形式
* チェックボックス形式
* スィッチ形式(ON/OFF、YES/NO、True/False)

元記事を表示

AndroidでRoomを使ってデータベース

# AndroidでRoomを使ってデータベースを実現
Androidでは色々なデータの管理方法があります。単純なファイル、key-valueストア、等など。ちょっと複雑な処理になると単純なテキストファイル、key-valueストアではすぐ限界になってしまいます。
Androidでは以前からRDBとしてSQLiteが使用可能でしたが、roomは更にそれらを抽象化して使いやすくしています。ORマッパーと同じ概念です。

公式ホームページでは
> Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのスムーズなアクセスを可能にし、SQLite を最大限に活用できるようにします。特に、Room には次のようなメリットがあります。
>
> ・SQL クエリのコンパイル時検証。
> ・繰り返しが多く間違いを犯しやすいボイラープレート コードを最小限に抑える便利なアノテーション。
> ・効率的なデータベース移行パス。
>
> こうしたことから、SQLite API を直接使用するのではなく、Room を使用することを強くおすすめします。

と書かれています。

元記事を表示

Android Studio内のみで完結させるパッケージ名の変更

# はじめに
個人開発中のアプリでFirebaseと接続させるときに適当なパッケージ名でプロジェクトを作成してしまっていたので変更させました。
結構面倒だったので記しておきます。

## 直接ファイル内部を弄る場所
– appレベルのbuild.gradleのapplicationId
– Android Manifestのpackage
– settings.gradleのrootProject.name
-> Gradle Sync

## 一括変更場所
![スクリーンショット 2022-11-26 13.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501570/54cfe17e-ff75-448f-08a4-678dfeea3204.png)

AndroidStudio左上のTabからAndroidを選択

– com.example.application のapplication部分の変更
java以下のフォルダを右クリックして
Refactor -> Rename -> Do

元記事を表示

Androidでスプラッシュ・スクリーンを出してみる

# スプラッシュ・スクリーンって?
スプラッシュ・スクリーンとはAndroidのアプリを起動して、アプリが完全に起動するまでの間、別な画面を表示するアレです。よくあるのはゲーム等で「Now loading…」とか「起動中です・・・」とか表示するやつです。
Android12かはら標準で、アプリアイコンがスプラッシュ・スクリーンになっていますが、それ以前は自前で組み込まないといけません。ここではAndroid11で自前で組み込む方法を説明します。

参考URL:
本家Android Develppers[スプラッシュ画面](https://developer.android.com/guide/topics/ui/splash-screen?hl=ja) (Android11まで)
[Splash画面を実装する方法](https://qiita.com/karass/items/bcb50607c0b9fc21f183)

まず、やり方には2通りあって
* Activityのテーマを変更する方法
* 別なActivityを用意する方法

があります。ゲームのようなより複雑、動きのある

元記事を表示

Flutter入門 サイト

https://udemy.benesse.co.jp/development/app/flutter-intro.html

https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/01_chapter0_aboutme

https://qiita.com/mkosuke/items/7957e71968aefc6558be

https://qiita.com/ekzemplaro/items/3c57e66460f76a664e87

元記事を表示

Androidで色々なDialogを出してみる

# Androidで色々なDialogって何があるの?
AndroidでDialogをだすとなると、AlertDialogが一般的ですが他にも色々あります。
参考URL
本家Android Developpers:[ダイアログ](https://developer.android.com/guide/topics/ui/dialogs?hl=ja)
# AlertDialog
一般的なこんなやつです。アクションボタンに3つの選択肢があります。
| アクションボタン | 意味 |
|:-:|:-:|
| setPositiveButton | アクションを受け入れて続行する場合に使用します(「OK」アクション)。 |
| setNegativeButton | アクションをキャンセルする場合に使用します。 |
| setNeutralButton | どちらでもない。後で、とか。 |

AndroidでASP.NET Coreを動かす

# はじめに

AndroidにはTermuxというLinuxのターミナルエミュレーターがあります。
今回はこの子にPRoot経由でUbuntuをインストールして、そのうえでASP.NET Coreを動かしてみようと思います。

# Termux と F-Droid

[最新版のTermux](https://f-droid.org/packages/com.termux/)は[F-Droid](https://f-droid.org/)で配信されています。
PlayストアでもTermuxは配布されていますが、2020年ごろに更新が停止され現在は一部機能が動作していません。
F-Droidは非公式ストアになるため、不明なアプリのインストールに許可する必要があるので注意してください。

インストールが完了すると次のようなターミナルが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36535/736a9edf-002f-5a8a-1b16-a7d875bb34ff.png)

元記事を表示

ActionBarをカスタマイズしてみる

# ActionBarって表示されるだけど、正直利用価値ない
AndroidのActivityのクラスでAppCompatActivityを継承すると自動的に実行時のアプリの上部にActionBarが表示されますが、アプリケーション名が表示されているだけで、何の飾りもありません。消すこともできるんですが、このActionBarをカスタマイズして、もっと色々なことにつかえるようにしてみましょう。

参考:
公式ホームページ:[アプリバーの追加](https://developer.android.com/training/appbar?hl=ja)
# どんなカスタマイズをするか?
* ActionBarの色がデフォルトで紫色なので色を変えてみます。
* ActionBarに表示されているタイトルを自由な文字列に変えてみます。
*

元記事を表示

OTHERカテゴリの最新記事