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

Android関連のことを調べてみた2023年08月04日
目次

Android端末からのリモート開発環境構築(Remote.it&Termus)

# Android端末からのリモート開発環境構築(Remote.it&Termus)

# 目次
– [はじめに](#はじめに)
– [環境](#環境)
– [構築手順](#構築手順)
– [利用手順](#利用手順)
– [まとめ](#まとめ)

# はじめに

この記事では、Android端末からリモート開発環境を構築する方法について紹介します。リモート開発環境の構築には、Remote.itとTermux、Termiusを使用します。Remote.itは、インターネット経由でデバイスにリモートアクセスするためのサービスであり、TermuxはAndroid端末上で動作するターミナルエミュレータです。TermuxによってAndroid端末にSSHサーバ機能とWake on lan機能を導入し、自宅のUbuntuサーバの起動スイッチとして利用します。
UbuntuサーバにもRemote.itとopensshを導入しておき、起動したらこちらもRemote.itでSSH接続するだけ!

# 環境
– Android端末1(手持ち)
・Remote.it(Proxyサービス経由でSSHサー

元記事を表示

JetpackComposeのscrollについて

# はじめに

Jetpack Composeのscrollについて調べた。

Jetpackでスクロールする場合、2種類の修飾子が利用できる

# scroll 修飾子
https://developer.android.com/jetpack/compose/gestures?hl=ja#scroll-modifiers

verticalScroll 修飾子と horizontalScroll 修飾子の2種類があり、要素の中身が最大サイズを超えた場合にスクロールする。

実装は簡単だが、拡張性はあまりない。

内部でScrollable修飾子が使われている。

“`kotlin
Modifier.verticalScroll(rememberScrollState())
“`

# scrollable 修飾子
https://developer.android.com/jetpack/compose/gestures?hl=ja#scrollable-modifier

scrollableはscroll修飾子と違い、スクロールしても自動で要素のオフセットを動かしてくれない

元記事を表示

Jetpack Composeでコンテンツのサイズに柔軟に対応しつつ正方形を維持するレイアウト

ここでは正方形を維持しつつコンテンツサイズに対して柔軟にレイアウトしたい時の実装の紹介です。

## 実装

以下のような `Modifier#layout` で縦横どちらか大きい方をサイズにするといったカスタムレイアウトで実現します。

“`kotlin
Modifier.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
val width = placeable.width
val height = placeable.height
val size = maxOf(width, height)
layout(size, size) {
val x = (size – placeable.width) / 2
val y = (size – placeable.height) / 2
placeable.placeRelative(x, y)
}
}
“`

元記事を表示

Android Bluetooth接続 PINコード setpinで入力(Java)

### ■概要
##### 1:Bluetooth接続テスト
##### 2:PinCodeを手動ではなく、プログラムで挿入し、その後SPP通信でsocketをconnectして、接続状態 & デバイス登録状態をつくる。
##### 3:2の状態を作ることによって、connectがほぼ100%繋がる状態を作る。

### ■UI
![Screenshot_2023-08-01-17-06-50-514.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/bd7fd071-f972-39f8-79e3-374a14447e62.jpeg)

### ■ソースコード
“`java MainActivity.java

package com.example.bluetooth_con_test_01;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
impor

元記事を表示

Android端末にHMS Coreをインストールする方法

# 手順
1. Android端末のブラウザを起動し、https://consumer.huawei.com/jp/mobileservices/appgallery/ を開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704548/8f79db28-4816-f65f-73a7-1cfaef0ad2de.png)

2. 「AppGalleryをインストール」をタップする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704548/ca88d35a-4906-ad45-1907-4ad5d39b3191.png)

3. 画面に表示されているリンクを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704548/74ffcf25-663c-4ad9-a04c-7ff0ffe72

元記事を表示

KMM(Kotlin Multiplatform Mobile)は廃止され KMP(Kotlin Multiplatform)に統一されたよ

長らくKotlin界隈でたびたび混乱していた **KMM(Kotlin Multiplatform Mobile)** と **KMP(Kotlin Multiplatform)** がついに終止符が打たれましたね

KMM(Kotlin Multiplatform Mobile)廃止です?

元記事を表示

KotlinCoroutineでFirestoreにアクセスする

# この記事の内容
kotlin coroutineを使用して、Firestoreのデータ追加とデータ読み取り、コールバックでのデータ読み取りをします。

### 前提
FirebaseAuthでのログイン・ログアウトが実装されている前提です。

### Firestoreの構成
Firestoreの構成は以下の階層構造になっています。
“`
users – collection
 ┣ {auth.user1.uid} – document
 ┃  ┗ spot_list – collection
 ┃    ┣ spotデータ1 – document
 ┃    ┗ spotデータ2 – document
 ┗ {auth.user2.uid} – document
     ┗ spot_list – collection
       ┗ spotデータ3 – document
“`
Firestoreは、先頭にCollectionというDocumentを複数格納するコンテナがあります。
Documentは、SubCollectionもしくは単純な文字列とか数値とかを格納でき

元記事を表示

[Android]エラー: java.lang.SecurityException: No active admin

## 環境

– Andoroid 13(SDK 33)
– Google Play Console

## 状況

Google Play Consoleのリリース前レポートで発生しました。

エラーメッセージ

> java.lang.SecurityException: No active admin ComponentInfo{com.google.android.apps.mtaas.deviceadmin/com.google.android.apps.mtaas.deviceadmin.DeviceAdminReceiver}

スタックトレース
“`
Exception Process: com.google.android.apps.mtaas.deviceadmin, PID: 6046
java.lang.SecurityException: No active admin ComponentInfo{com.google.android.apps.mtaas.deviceadmin/com.google.android.apps.mtaas.deviceadm

元記事を表示

Android studio Export Project復元に注意

# Exportしたデータを復元しなければならない
– 何かやらかしてBuild不可になった
– やっぱりやらかして元に戻らなくなった。
– Exportはちゃんとできている

:::note info
メニュー(Windows)
File > Export で任意のフォルダにzipデータが保存されます。
:::

# 復元しないじゃないか!

**調べた情報**
> 復元
>> Zipファイルを任意のフォルダに解凍する。
>> File>New>Import Projectでインポートする。

– 確かに環境は戻ったように見えます・・・

## Buildできない!!
– build.gradleもなんか前と違う。一つしかない!
– 一旦新しいジェクトを作ってみました。

:::note warn
確認
何かおかしいところを確認します。
:::

# (解決策)そのまま解凍してAndroid studio を開かない!

:::note info
– 新しいプロジェクト:プロジェクト名>app
– 保存したZip名>プロジェクト名>app
:::

**ハマリポイントは以下の通り

元記事を表示

Android の端末の言語設定をコマンドで変更したい

# 概要
端末の言語設定を毎回手動で変更するのが面倒だったので、楽にできる方法をまとめました。

## adb コマンドで設定画面を開いてから言語を変える

“`shell
adb shell am start -a android.settings.LOCALE_SETTINGS
“`
言語設定画面はメーカーやAndroidのバージョンによって導線が微妙に違ったりするので、これを使うとちょっと楽になるかも。

## ドキュメントに書いてある方法
こちらに記載されている方法です。
https://developer.android.com/guide/topics/resources/localization?hl=ja

“`shell
adb shell
setprop persist.sys.locale fr-CA
“`

のような感じで簡単に変更できそうな感じで書いてありますが、実際に試すと効果はありません。

## customlocal2 経由で変更する
“`shell
adb shell am broadcast -a com.android.intent.a

元記事を表示

広告IDを特定の値に変更したい(rootが必要)

“`shell
adb root # root じゃないと編集できない

# 広告IDが記載されているファイルをローカルにコピー
adb shell cat /data/data/com.google.android.gms/shared_prefs/adid_settings.xml > adid_settings.xml

# ここでローカルにコピーした adid_settings.xml をエディタで開いて任意の値に変更する

# 反映する
adb push adid_settings.xml /data/data/com.google.android.gms/shared_prefs/adid_settings.xml

# root を解除して作業終了
adb unroot
“`

元記事を表示

DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(3)~サンプルプログラムの実行(実行編)~

今回はMobile SDK(Android版)のサンプルプログラムを動かすための準備をします。
[前回の記事](https://qiita.com/shiiiinnooooo/items/32f59f62fdc3ec3f98c0)では、サンプルプログラムを実行するための準備を行いました。

# サンプルプログラムのダウンロード

[このサイト](https://github.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio)からサンプルプログラムをダウンロードしましょう。
今回実行するサンプルプログラムは、DJI SDKが正常に実行されることを確認する、というだけのアプリです。

早速ダウンロードしていきます。
下記画像の右上にある緑色の「Code」というボタンを押すと、zip形式でダウンロードできます。
![スクリーンショット 2023-07-31 11.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

How to use YYSystem, a voice interactive real-time translation application

Let’s introduce the usage of YYSystem, which can assist in web meetings between English and Japanese speakers.

# Introduction
YYSystem is a cross-platform application (Windows, iPhone, Android) capable of transcribing multiple-person meetings and translating into multiple languages. It is well-balanced in terms of voice recognition accuracy, sentence boundary recognition, and translation precision, particularly made easy to handle in conversations using Japanese and English. Although the free v

元記事を表示

DJI Mavic 2 Pro を自作Androidアプリで自動操縦させる(2)~サンプルプログラムの実行(準備編)~

今回はMobile SDK(Android版)のサンプルプログラムを動かすための準備をします。

[前回の記事](https://qiita.com/shiiiinnooooo/items/21689dff1ffcf1b91104)では、AndroidStudioでDJI Mobile SDKを使用できるようにしました。

# 手順
1. DJI Developerの登録
1. App Keyの取得

# DJI Developerの登録
まずはじめに、DJI製品を使用する際に必要となるDJIアカウントを作成する必要があります。
[DJIの公式サイト](https://www.dji.com/jp)からアカウントを作成します。

登録の際には[このサイト](https://sekido-rc.com/blog/technical/210329_002/)を参考にさせていただきました。

[DJIの公式サイト](https://developer.dji.com/)から、登録を行います。
まずはじめに、サイトの右上から「Register」を押してください。
![スクリーンショット 202

元記事を表示

JetpackComposeで9patchイメージを描画する

# 概要
![スクリーンショット 2023-07-31 10.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3491965/004acf7e-eee5-bdaa-bc28-0347156c1df8.png)
「Sign in with Google」ボタンを作りたかったんです。

このボタンにはガイドライン([ガイドライン](https://developers.google.com/identity/branding-guidelines?hl=ja))がありまして、このサイトから画像をダウンロードすると、android用は9patchイメージなんです。

さて、これをJetpackComposeでどうやるか?という考察です。

## ファイルをプロジェクトにインポートする
上記のガイドラインページから画像をダウンロードすると、サイズごとに8個のファイルが入っています。
4つのボタン状態(disable, focus, pressed, normal)x(light or dark)で8個

元記事を表示

20230729_自主学習MVVM_データレイヤ勉強編_DI完敗

## やったこと
* 公式のデータレイヤの研修
https://developer.android.com/courses/pathways/android-basics-compose-unit-5-pathway-2?hl=ja

## わかったこと
* データリソースの勉強も必要
* DIの箇所の理解不足
丁寧に勉強せねば。

## わからないこと
* サンプルアプリの画面レイアウトとしての、xmlファイルで存在しない。(別のやり方があるんだろう・・・)
=> いろいろ調べているとこれであると推測。ChatGPTにも聞いてみました。

ChatGPT君が言うには・・・
>Jetpack Composeファイル:もしリポジトリがJetpack Composeを使用している場合、Jetpack Composeファイルが含まれている可能性があります。Jetpack Composeでは、UIコンポーネントがKotlinコードで直接記述されるため、XMLレイアウトファイルを使用しないことがあります。

## これからやること
完了まで行えていないので、続きやってみよう~。

## 偉大

元記事を表示

FlutterでGoogle Driveにファイルをアップロードして参照する

# はじめに

ちょっとGoogleドライブにファイルをアップロードして参照したくなりました。
昔、Javaでやったときに面倒だった記憶がありますが、Flutterでも面倒そうなので、ちゃんとやったことを残しておきたいので記事にします。

バージョン関係は以下の通り

“`console
> Flutter –version
Flutter 3.10.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 796c8ef792 (6 weeks ago) • 2023-06-13 15:51:02 -0700
Engine • revision 45f6e00911
Tools • Dart 3.0.5 • DevTools 2.23.1
“`

現時点ではAndroidのみの話になります。
また、お試し実装なのでエラーチェック等かなり甘いのでご注意を。

# ゴール

ログインして、Google Driveにファイルをアップロードしてそのあとダウンロードする。

# 準備

元記事を表示

android:enableOnBackInvokedCallback=”true”にしたときのバックキーのKeyEventの変化

予測型「戻る」ジェスチャーをオプトインしていますか?

オプトインした場合のDialogでのバックキー検出の問題に遭遇しました。

https://developer.android.com/guide/navigation/predictive-back-gesture?hl=ja

予測型「戻る」ジェスチャーをオプトインするには、 `AndroidManifest.xml` の `` タグ内で、 `android:enableOnBackInvokedCallback` フラグを `true` に設定します。

“`AndroidManifest.xml



“`

# AppCompatActivityでの変化

このとき、

> 注: OnBackPressedCallback は、android:enableOnBackInvokedCallback の値に関

元記事を表示

20230728_自主学習MVVM_データレイヤを勉強せねば

## やったこと
* 情報収集(ネットサーフィン)

## わかったこと
* 自分が終了した研修は、UIレイヤだけだったこと
* まだデータレイヤにおいては、ノータッチであること
* データレイヤは、MVVMのModelのことであり、RepositoryとDataSourceで成り立っていること
* Android開発で推奨されるアーキテクチャは、厳密にはMVVMではないという意見があること(公式は近いとしてる。)
* 変数の監視には、オブザーブとxmlからバインドする奴はどっちでもいいということ
(UIレイヤの話ですが)

## わからないこと
* データレイヤの世界

## これからやること
公式のデータレイヤの研修をやろうかな
https://developer.android.com/courses/pathways/android-basics-compose-unit-5-pathway-2?hl=ja

## 偉大なる参考様
いつもありがとうございます。

https://zenn.dev/nemototea/articles/d7fe9b095e3487

https:

元記事を表示

JetpackComposeでFirebaseAuth(メールリンク認証)

# JetpackComposeでFirebaseAuth(メールリンク認証)
FirebaseAuthのメールリンク認証を実装していきます。

メールリンク認証とは、以下のフローで認証を行うものです。
1. ユーザーが、アプリでメールアドレスを入力する(パスワードはいらないです)
1. Firebaseが、認証情報をDeepLinkにしたDynamicLinksを載せたメールをそのメールアドレス宛に送信する
1. ユーザーが、DynamicLinksを開く(=タップする)
1. アプリが、メールアドレスとDynamic LinksのDeepLinkを使って、FirebaseAuthにSignInする

メールアドレスの正当性だけでアカウントが作れる様なアプリの場合は使えそうですね。

(小ネタ)DynamicLinks

メールやSNS、Webサイトにあるリンクを押すと、連動するアプリが起動するよ。という機能です。

(小ネタ)DynamicLink

元記事を表示

OTHERカテゴリの最新記事