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

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

AndroidのJUnitテストは超ムズい(4)

# AndroidのInstrumentTestがmockkのバージョンによっては動かない。

“`kotlin:build.gradle.kts
・・・
dependencies {
・・・
androidTestImplementation(“io.mockk:mockk-android:x.xx.x”)
androidTestImplementation(“io.mockk:mockk-agent:x.xx.x”)
“`
mockk-android
mockk-agent
のバージョンですが、今のところ
* 1.13.3 → OK
* 1.13.4 → NG
* 1.13.5 → NG
* 1.13.6 → NG
* 1.13.7 → NG

となります。
“`
java.lang.IncompatibleClassChangeError: Superclass kotlinx.coroutines.flow.StateFlow of kotlinx.coroutines.flow.StateFlow_1_Proxy is an interface (d

元記事を表示

AndroidでRtrofitの接続先をSharedPreferencesに持つ場合

# Retrofitの接続先をSharedPreferenceに持つ場合

AndroidでHTTPで通信する場合、Retrofitを使う機会が多いと思います。
Retrofitの接続先のbaseUrlをSharedPreferenceに持つ場合があるともいます。
Androidアプリの中で設定画面を作って、SharedPreferenceのbaseUrlを更新しても、Retrofitの接続先には反映されません。
アプリを一度終了して、再度起動すると反映されます。

“`kotlin
class NetworkRepository(baseUrl: String, connTimeout: Long, readTimeout: Long) {

private var service: NetworkService
/**
* 初期化
*/
init {
logging.setLevel(HttpLoggingInterceptor.Level.BASIC)
val client = OkHttpClient

元記事を表示

DroidKaigi 2023 セッション資料&関連情報まとめ

[DroidKaigi 2023](https://2023.droidkaigi.jp/) の各セッションの登壇資料と動画、関連情報を随時まとめていきます。

[Twitter](https://twitter.com/search?q=%23DroidKaigi) や [YouTube](https://www.youtube.com/c/DroidKaigi/videos) の情報をもとに更新していきますが、抜け漏れ誤りなどありましたらコメントなどでお伝えください。

昨年の資料と関連情報はこちら。

https://qiita.com/hiraike32/items/5fbbfa9d023476194a7c

# Day1

## 11:20~ これで安心! Compose 時代のDon’t keep activities対応
## 11:20~ Gradle Convention Plugins

資料

## 11:20~ Modifier.Node を使いま

元記事を表示

【Android Java】リスナーを脳みそに叩き込む

## リスナーを毎回ググってた
私は、リスナーを実装するときに毎回ググっていたのですが、
リスナーくらいは空で書けるようになりたいな、と思って実装手順を叩き込みたいと思いました。

初学者にとって最初につまずくポイントなんじゃないでしょうか。
リスナーの説明で、よく、`onclickListener`を例に説明がされますが、既存のlistenerを例に出されてもよくわかんないなと、思ってたので、今回は、自分で作るカスタムリスナーを例に説明していきます。

## この流れさえ覚えちゃえばOK!リスナー実装手順を覚える
1 インターフェースを作成する

2 リスナーを実装する

3 リスナーオブジェクトを作成し、リスナーと関連付ける

4 イベントが発生した際の処理を記述する

## リスナー実装の手順を箇条書きで詳細に
1 インターフェースを作成する
– リスナーのインターフェースを作成する
– このインターフェースには、リスナーが実装するメソッドが含まれる (今回は`onCustomEvent()`というメソッドを作ることにした)
“`java
// MyCustomListener

元記事を表示

FlutterでHTTP通信をしてみた件

# はじめに
Flutterで簡単なHTTP通信を実装してたいと思い。作ってみました。
GETとPOSTしかしていません。

# 動作環境
この記事の動作環境は以下のとおりです。

Flutter:3.7.1
Dart SDK:2.19.1
IntelliJ IDEA:2022.2.2

# 完成イメージ
今回の完成イメージは下図のようになります。

# サンプルコード
サンプルコードは[GitHub](https://github.com/ktaro-nakaya/bmi_sample)を確認してください。

# サーバサイド
このサンプルのサーバサイドはjson-serverを利用しています。
json-serverの使い方は[公式サイト](https://www.npmjs.com/package/json-serve

元記事を表示

Android Studioのエミュレーターでカメラスキャンする

## 初めに
Android Studioのエミュレーターでカメラスキャンする方法を記載します。
主にQRコードの読み取り機能を要するアプリなどで使用しています。

## やってみる

1. まずデバイスマネージャーを開いて、設定したい端末の編集ボタンをクリックします。
![スクリーンショット 2023-09-13 16.24.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/341fe03f-5ed0-833b-ede4-e9a8b182a46b.png)

2. 「Show Advanced Setting」のボタンをクリックします。
![スクリーンショット 2023-09-13 16.25.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/cdd2241d-f207-51b4-8200-b649d4823f2e.png)

3. Cameraの欄を以下のように変更します。
![スクリ

元記事を表示

Androidアプリ開発 – プロジェクト構成のメモ

# 概要
数年前の新卒時代に書いていた下書き記事があったので供養です。
ここしばらくAndroid触っていなかったので、思い出すにはちょうどいいかも。

# Androidアプリの開発
Androidアプリ開発の備忘録を書いていく.

# 環境
Android Studio 3.5(2019 年 8 月)
OS : Windows10

# Android アプリ開発の概要
処理をJAVAクラスに,画面構成をXMLに記述する.
JAVAクラスをアクティビティ(Activity),xmlファイルをレイアウトファイルと呼ぶ.

# プロジェクトの準備
空のアクティビティーで作成する.
![イメージ872.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245300/cecdc1ae-6059-0917-af70-1c056dbe29bc.jpeg)

# プロジェクトの構成
プロジェクトを作成して,Run Buildが完了したら,以下のような構成になる.
![image.png](https://qiita

元記事を表示

Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ‘:app:debugRuntimeClasspath’. の解決方法

## 解決策

`settings.gradle` に

“`settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url ‘https://jitpack.io’ }
}
}
“`

と `maven { url ‘https://jitpack.io’ }` を追加する。

この際に
`Unexpected tokens (use ‘;’ to separate expressions on the `
と出る場合は、

“`settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS

元記事を表示

Androidアプリ「Clask」をリリースしました【個人開発】

## はじめに

個人開発したAndroidアプリ「Clask」をリリースしました!

この記事では、私がAndroidアプリ開発を始めた経緯や開発していて感じたこと、アプリの紹介などを自分のための記録も兼ねてまとめていきます。

## 目次
1. リリースしたアプリ「Clask」について
2. 制作した経緯
3. 使用した言語・データベース
4. 制作していて楽しかったこと・良かったこと
5. 大変だったこと
6. おわりに

## リリースしたアプリ「Clask」について
#### リリースしたアプリ

* Clask:リストで分類してタスク管理

#### アプリの概要

タスクをリストで分類して管理するタスク管理アプリです。完了済みのタスクは青、今日は期限のタスク

元記事を表示

吃音症を持つ私がWeb会議で吃音を回避できるようになったお話

# 自己紹介
– 神奈川県内でシステムエンジニアとして働いています。
– 業務内容は要件定義以降すべてで、基本会議でお客さんとやりとりをしながら進めてます
– 後述の吃音症の自覚があり、悩みながら仕事をしています(特に会議)

# 吃音症とは
そもそも吃音症とは何なのかを改めてご説明します。

>  吃音(きつおん、どもり)は、話し言葉が滑らかに出ない発話障害のひとつです。単に「滑らかに話せない(非流暢:ひりゅうちょう)」と言ってもいろいろな症状がありますが,吃音に特徴的な非流暢には、以下の3つがあります。
>
> ・音のくりかえし(連発)、例:「か、か、からす」
> ・引き伸ばし(伸発)、例:「かーーらす」
> ・ことばを出せずに間があいてしまう(難発、ブロック)、例:「・・・・からす」
> 上記のような、発話の流暢性(滑らかさ・リズミカルな流れ)を乱す話し方を吃音と定義しています ( ICD-10, WHO)。

引用 : [国立障害者リハビリテーションセンター](http://www.rehab.go.jp/ri/departj/kankaku/466/2/)

# 自身の症状

元記事を表示

【Flutter】Map型まとめ

# Map型とは

以下、公式より引用。

> キーと値のペアのコレクション。関連付けられたキーを使用して値を取得します。

https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html

KeyとValueの組み合わせを、1つのオブジェクト内で管理することができ、Keyを基準にしてValueの取り出し、書き込みを自由に行うことができます。

# Map型の宣言

他の変数の宣言と同様に、変数名の前にMap型を指定する必要があります。
Map型の場合、Keyの型とValueの型も一緒に宣言します。

“`dart
final Map userData = { //Map < Keyの型 , Valueの型 >
“name” : “山田太郎”,
“age” : 24,
};
“`

KeyとValueというワードを使用していますが、Map型の要素で`:(コロン)`の左にあたるところがKey、右側にあたるところがValueになります。

上記で宣言したMap型の変数

元記事を表示

FlutterのAndroidとiOSでのファイルアクセス

# はじめに
FlutterでAndroidとiOSでファイルアクセスしたくなったので、動かしながら調べてみました。
まだしっかりと調べてないところもあるので内容を更新するかも。

# パスの取得方法

## アプリケーション用のパスを利用する場合は path_provider

[path_provider](https://pub.dev/packages/path_provider) で取得されるパスはアプリケーション専用のパスを取得できます。
ほかのアプリケーションから参照することはできません。
ただし、パーミッションをAndroidManifest.xmlに設定する必要はありません。

以下のコマンドでプラグインを導入します。

“`terminal
flutter pub add path_provider
“`

使い方は簡単で、以下のように利用します。
“`dart
var appDocDir = await getApplicationDocumentsDirectory();
File targetPath = File(“${appDocDir.path

元記事を表示

Code Push(Flutter)を触ってみた

## 概要

アプリ開発をしていて、急な仕様変更やバグ修正が発生した時に
「申請通さなきゃ…」とか「アップデート版を浸透させなきゃ…」とか
本当に悩ましい問題だなと感じながら日々仕事をしていました。

そんな時に以下の記事を見つけて「すげぇ」ってなったので触ってみることにしました。

https://zenn.dev/tsuruo/articles/13687d8455d1b1

## Code Pushって何?

記事内でも言及されていますが、簡単にいうと
**ストアを介さずにコードを修正できるツール**です。
これによって、

– 申請を通すのに時間がかかる
– アップデートしてくれたユーザーしか変更が反映されない

といったアプリ特有の課題を全て解決してくれそうです。
Apple / Googleがよく怒らないな…と感心。

使えるのはReactNativeとFlutterだけっぽいです。
ReactNativeは結構前から技術あったみたいですね…

https://qiita.com/wktq/items/6083d96ff60a547cf15a

今回はFlu

元記事を表示

[Android] 非RootかつJavaのみでJavaの関数をフックする

# はじめに
Javaでも関数フックを出来たら面白いんじゃないかと思ったのでやってみました。

# 環境
・Android 11(実機)
・非Root

# フック前の下準備
まず、簡単なライブラリを作っていきます。
フォイル/フォルダ構成はこんな感じ

“`java:title

jinterceptor
┗ EvacuatedMethodStorage.java
┗ Interceptor.java
┗ Memory.java
┗ ArtMethod.java
┗ Reflection.java
┗ Unsafe.java

MainActivity.java

“`
##

# 以下説明とソース

“`java:EvacuatedMethodStorage.java
public class EvacuatedMethodStorage {

private static int mReferencedCount = 0;

public static int referencedCount(){

元記事を表示

【Dart / Flutter】演算子まとめ

# 論理演算子

 

 

 

 

 

 

 

【Glide】同時進行する案件を手元で編集・進捗確認できるアプリを作成

## 【Glide】同時進行する案件を手元で編集・進捗確認できるアプリを作成

皆さんこんにちは。
今回は、Glideを使ってアプリを作成しました。
作成前に参考にさせて頂いたリンクを添付します。

https://powerapps.microsoft.com/ja-jp/how-to-make-an-app/

https://nocodedb.world/archives/1180

### ■必要な情報のみ手元で見れたら・・・
多くの取引先様と商談を行うと、案件や商談数が増えるとともに、
「あれ、このメーカーさんとは何のメニューをいつから出稿していつまで配信するんだっけ?そもそも予算いくらだっけ」ということが起こります。

もちろん、間違えるわけにはいかないので商談前に前回の記録、報告書に目を通すわけですが、
PC立ち上げる→毎度Excelファイルを探す→確認を行うのは効率が悪い。外出先ならなおのこと。

代理店案件はプロジェクト管理ツールがあるのでモ

【kotlin】超簡単なMVVMを実装してみた、③画面遷移、ViewModelに引数を追加する

# 実装内容
EditTextに文字を入力して「移動する」ボタンを押したら、画面遷移し、入力した文字が表示される。

遷移元の画面
![Screenshot_20230909_003404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784089/1e3a2293-e62b-3a71-7772-b8a589ceb445.png)

遷移先の画面

![Screenshot_20230909_003417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784089/58a4ae88-ef17-c202-0e87-e49defd0110d.png)

**[コード]**
**・イベントクラスの設定**
イベント通知用のクラス作成
下記のURL参照
https://github.com/google/iosched/blob/main/shared/src/main/java/com/google/samples/apps/

【adb】Androidの特定のアプリによるバイブレーションを無効化する

adbコマンドを使えるようにした上で、
“`shell
adb shell appops set <パッケージ名> VIBRATE ignore
“`
で無効化できます。おそらく。
アプリのパッケージ名は [Aplin](https://play.google.com/store/apps/details?id=com.nagopy.android.aplin) あたりを使って調べましょう。

自分はLenovoのタブレットで顔認証失敗時に振動するのが嫌だったので、
“`shell
adb shell appops set com.tbsmart.levision VIBRATE ignore
“`
で無効化しました。

【Android】リップルエフェクトを付与する方法

# はじめに
最近ペアプロのような形で弊社の社員とコミュニケーションを取りながら作業することが多いのですが、その際にリップルエフェクトの付与の仕方を質問としてもらいました。
今回はこのリップルエフェクトの付与の仕方を備忘録的にまとめておこうと思います。

# リップルエフェクト付与の仕方
付与の仕方は非常に簡単で、対象のUIに対して以下を設定してあげるだけです。

“`
android:foreground=”?android:attr/selectableItemBackground”
“`

# さいごに
いよいよDroid会議が今週に控えていますねー
久しぶりに直接現地へ顔出すので、よければ声かけてください!

Android実機でGoogle Cardboard for Unityを実行すると表示がおかしくなる件

# 初めに
Qiitaの質問として書こうとしていたものが途中で自己解決しちゃったので、質問をそのまま記事にしました。
内容としては[この記事](https://qiita.com/taxi13245/items/dec1a7f6bf8ec925cbf5)の続きとして作っていたものです。

以下は質問内容です。

# 質問内容だったもの

>::: note info
>開発環境:
>Windows11 Home Edition(64bit)
>Unity 2021.3.4f1 Personal
>Unity Hub 3.5.0
>
>実行環境:
>Android 12 (ZTE Libero 5G III)
>
>使用したパッケージ:
>Google Cardboard XR Plugin for Unity 1.21.0
>UniVRM 0.110.0_3f7d
>MMD4Mecanim 2020/01/05 版(β)
>
>:::
>#### Unityを使用しAndroidスマートフォンのCardboardで、VRMモデルを踊らせたい。
>Unityを使用し、以下のことを行いまし

論理演算子 解説
+ 加算
減算
/ 除算
~/ 除算(小数切り捨て)
% 剰余
* 乗算