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

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

Android StudioでWebViewアプリを作成してみる

## はじめに
転職による有休消化期間で何かしたいと思い、Androidで欲しかった機能を作ろうと思い立ちました。
期間は半月程度です。
ほしかった機能はここでは重要ではないので割愛しますが、Androidのローカルファイルへのアクセスが必要な他は特に必須機能がないのでアプリ画面はWebViewなどで簡易に作成することにしました。
Kotlinは未経験でしたが、Javaは経験済みだったため、Kotolinを一から学習するのではなく、JavaでのAndroidアプリをモック的に作成し、Kotlinにリファクタリングする形で差分学習をし、学習効率をあげようと計画しました。

いつもの自分だったら、Kotlinの本などで一通り学習して、アプリの基本設計もして、準備万端な状態で開発に入るのですが、半月という期間でそれでは間に合いません。
また、こちらの本を読んだばかりで、まずモックを作ってしまうというアプローチや学習効率を模索したかったのもあります。(Kindle Unlimitedに入っています)
Flow vs LiveData

どれにします? どの流れにします?

![スクリーンショット 2022-09-13 17.29.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/578bb333-c6b1-7ae4-3beb-d0f8a5c2bc2a.png)

元記事を表示

【Javascript】PWAでお絵かきアプリを作った時の技術的課題について【Apple Pencil】

## 成果物

どんなものを作ったか?を先に見てもらう方が分かりやすいと思うので成果物から先に置いておきます。

– [大人用](https://kurokky.github.io/whiteboard/tablet)(画像を保存できる)
– [こども](https://kurokky.github.io/whiteboard/child)(画像を保存できないシンプル版)

作る経緯についてはnoteの[こどものためにスマホ・タブレットで使える「ホワイトボード」を作った話](https://note.com/kurokky/n/ne4260f983498)に記載しています。
qiitaは技術的な課題と解決方法について同不順で記載します。

## debugが超絶面倒だった

個人開発について回る問題ですけど。

– iPad(HTML/PWA)
– iPad + **Apple Pencil**(HTML/PWA)
– iPhone(HTML/PWA)
– Android(HTML/PWA/OS違い)
– FireTablet(HTML/PWA)

これを1人でチマチマやるのが、面

元記事を表示

vistaでandroid studio その21

# 概要
vistaでandroid studio 1.1.0やってみた。
jniやってみた。
練習問題やってみた。

# 練習問題
jniでzundokoを表示せよ。

# 写真

![device-2022-09-13-072513.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/38177ab4-60e0-e69b-7e03-6674b2aa563a.png)

# サンプルコード

“`
#include
#include
#include
#include

JNIEXPORT jstring JNICALL Java_com_ohisamallc_ohiapp154_ohiapp154_MainActivity_hello(JNIEnv * env, jobject thiz) {
char buf[456];
const char * s0 = “ズン “;
const c

元記事を表示

vistaでandroid studio その20

# 概要
vistaでandroid studio 1.1.0やってみた。
jniやってみた。
練習問題やってみた。

# 練習問題
jniでfizzbuzzを表示せよ。

# 写真

![device-2022-09-13-065334.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/6db18e07-53dc-bef7-af1a-751945f03f8e.png)

# サンプルコード

“`

#include
#include
#include

JNIEXPORT jstring JNICALL Java_com_ohisamallc_ohiapp154_ohiapp154_MainActivity_hello(JNIEnv * env, jobject thiz) {
char buf[456];
char n[8];
const char * s0 = “fizz “;
const ch

元記事を表示

Androidでリリースアプリ作成の為の情報を忘れてしまった。。。

## はじめに
この記事はリリースアプリを作成する為の情報をAndroidStudioに依存してしまい、キー情報を紛失したと焦って調べた際の情報をまとめました。

## 対象者
この記事は下記のような人を対象にしています。

– jks等のキーストアファイルは残っているが、パスワードを忘れてしまった方

## 結論
パスワードに設定した文字列の予測(こうしたっけ?)が思い付かない方は、Google Play Consoleから、署名鍵の紛失による申請を実施した方が良い。

### 結局情報を諦めるまでに試した手順

### 今回のパターン

Androidのリリースアプリを作成する為には以下の4個の情報が必要

1. keystoreファイル(.jks)
2. Alias名
3. Aliasパスワード
4. keystoreパスワード

今回 1.のkeystoreファイルだけ残っている状態で、2.3.4の情報の復元を試みた。。。

### 実施した内容

本家Googleさんに復旧する為のツールがある事が判明し、ダウンロードしてきた。

[Google Code](https://c

元記事を表示

Kotlin コルーチンの標準ライブラリのみでコルーチンを使ってみた

# はじめに

Kotlin コルーチンは Web 上の様々なドキュメントや、本家が提供する [Coroutines guide](https://kotlinlang.org/docs/coroutines-guide.html) 等を読んでいけば割と簡単に使うことができます。例えば Android アプリを作成する時にドキュメントやサンプルコードを読むと Kotlin コルーチンを使う例がたくさん出てきますので、それを真似しながら上記の本家のガイド等で調べて使いこなしていくという感じになると思います。

一方コルーチンをある程度使っていくと、コルーチンの豊富な機能はどのように作れらているのか興味が湧いてきます(きません?)。Kotlin コルーチンは以下の2つのライブラリから作られており、標準ライブラリが提供する基本的な機能の上に高水準なライブラリが作られ様々な機能を提供しています。

– [kotlin.coroutines](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/)
: 基本的で

元記事を表示

vistaでandroid studio その19

# 概要
vistaでandroid studio 1.1.0やってみた。
jniやってみた。
helloworldまでの、手順。

# 写真

![device-2022-09-12-074650.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/e14e0256-3e31-0316-ea2e-26396c96a282.png)

# NDKをダウンロード。

android-ndk32-r10-windows-x86.zip

# /src/main/jniフォルダーを作る。

# /src/main/jni/hello.cを書く。

“`
#include

JNIEXPORT jstring JNICALL Java_com_ohisamallc_ohiapp154_ohiapp154_MainActivity_hello(JNIEnv * env, jobject thiz) {
return (* env)->NewStringUTF(env, “Hello Wo

元記事を表示

【Flutter】Segmented buttons を実装する

## 初めに
Material Design3 の Components には [Segmented buttons](https://m3.material.io/components/segmented-buttons/overview) という項目があります。
しかし、Flutter の Widget には Segmented buttons が用意されていないため、今回はそれを実装してみたいと思います。

## 記事の対象者
+ Flutter と Riverpod の基礎理解ができている方
+ アプリ内で Segmented button を実装する方
+ Material Design3 に記載されていた内容をそのまま実装したい方

## 準備
今回は [material_segmented_control パッケージ](https://pub.dev/packages/material_segmented_control)を使って Segmented button を実装します。

### パッケージの追加
まずは [material_segmented_control

元記事を表示

Androidのセキュリティ的な雑談(FRP)

初投稿です、よろしくお願いします。

-Factory Reset Protection-
Googleのシステムが入っているならほとんどの端末で有効になるセキュリティ機能
ヤ〇オクなどではアカウント残りなどとも呼ばれている。

Googleアカウントを残したまま初期化すると、残したアカウントにログインしないと初期設定が進まない設計になっている。

ただ、
・(一定バージョンまでは)あくまでパスロックがかかっていない初期化後のため、
所定の方法を踏めば回避可能

・仕組み自体を悪用されやすい
(別ルートでGアカウントを設定したりAndroid 9から採用されたPINロックで解除を悪用するなど)

とかなり緩く作られている。(各社ベンダー任せ?)

対してAppleのIOS搭載端末では、知る限り本体のみでプログラムやUIの抜け穴を用いて解除されたということは聞かない。

Android端末のメーカーもO〇poやXi〇omi、H〇aweiなどは独自のリカバリなどを用いて
パスコードが不明な場合の初期化を封じたり、初期設定時に独自IDにログインしろとする場合がある。

気になるであろう国内メ

元記事を表示

AndroidStudio内のリソースファイルの置き場と利用方法

# はじめに
Androidエンジニアとして初心者だった頃に、取り込んだ画像の置き場所がわからない
文字列を入力する場所ってどこだっけ?
となった経験があることを思い出したので、それぞれのリソースファイルの置き場所とそれの使い方等を表にして記事に残そうと思います。

# 表
|フォルダ|説明|利用例|
|:—|:—|:—|
|/res/values/|色(Color)|R.color.red|
||色(ColorDrawable)|R.drawable.red|
||寸法|R.dimen.one_pixel|
||テーマ 又は、スタイル|R.style.Theme_CommonTheme|
||文字列|R.string.text|
|/res/drawable/|Bitmap(.bmp)、JPEG(.jpg)、PNG(.png)、GIF(.gif)|R.drawable.gazou|
|/res/layout/|レイアウト|R.layout.main_layout|
|/res/anim/|アニメーション|R.anim.spin|
|/res/raw/|バイナリ|R.ra

元記事を表示

Jetpack ComposeでTabにバッジをつける方法

今回はJetpack ComposeでTabにバッジをつける方法です

未読のお知らせ等があるときにタブにバッジを表示させたいことがあると思います。

実装方法です。

# androidx.compose.materialの導入

[androidx.compose.material](https://developer.android.com/jetpack/androidx/releases/compose-material?hl=ja)
を導入します。

“`
dependencies {
implementation “androidx.compose.material:material:${latest.version}”
}
“`

androidx.compose.materialを導入すると“BadgedBox“や“Badge“を使用することができ、こちらを使用してバッジを実装していきます。

# バッジの実装

表示するタブのアイコンと、表示するテキストのデータを作っておきます。
“` Screen.kt
val tabData = listOf

元記事を表示

(初心者向け)AndroidStudioを使ってギャラリーアプリを作る

### 環境

– Windows10 21H2
– Android Studio Chipmunk | 2021.2.1 Patch 1

### 使用するライブラリ
– [glide](https://github.com/bumptech/glide) 4.13.2

今回は Java を使用して簡易的なギャラリーアプリを作っていきます。
完成するとこのようになります。
完成画像

\*記事中でこの部分が間違っているやこの方法の方が良いという部分がありましたら教えていただけると幸いです。

それでは始めましょう!

## 下準備
まずは、マニフェストファイルに`【AndroidStudio】KotlinでToolBarに検索欄を作りたい

やりたいことはタイトルの通りToolBarに検索欄をつけたかったので,その方法について載せる.
# 完成イメージ
上の画像のように検索アイコンがあり,アイコンをタップすると下の画像のように文字入力ができるようになる
![2022-09-11 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671458/dcd6243c-1707-fe0c-f7f1-60e7c660d3ac.png)
![2022-09-11 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671458/11fb444e-a123-4662-b4de-fd8b3078c606.png)

# ToolBarを追加する
まずはToolBarを表示させたいレイアウトにToolBarを追加する
“`xml:activity_main.xml

元記事を表示

Jetpack Composeのbuild.gradleをKotlin 1.7.10に対応させる。

業務でSwiftUIを1年半ほど触っていたのですが、最近Jetpack Composeに触り始めて、そのCodelabの充実とモジュールの柔軟さに衝撃を受けております。

# Firebaseを使いたい
趣味で開発しているアプリのデータベースにFirebaseを使いたいなと思い、調べていたところ、Firebaseから素晴らしい[公式のサンプルプロジェクト](https://firebase.blog/posts/2022/04/building-an-app-android-jetpack-compose-firebase)が出ていました。こちらを写経しつつ自分のアプリに組み込もうとしていたら、ビルドで詰まりました。

# エラー内容
どうやらどこかのmetaデータのKotlinバージョンと実際のバージョンが合っていない模様。

“`kotlin
/Users/(username)/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.0/(hash)/kotlin-stdli

元記事を表示

Android アプリの ANR の解析方法

Android アプリで [ANR](https://developer.android.com/topic/performance/vitals/anr?hl=ja) が発生した際の解析方法をメモします。

ANR の解析には [Bugreport](https://developer.android.com/studio/debug/bug-report?hl=ja) を使用します。
“`
adb bugreport
“`

bugreport コマンドを実行すると、下記のような zip ファイルが生成されます。
“`
bugreport-sdk_phone_x86-RSR1.210210.001.A1-2022-09-10-15-05-50.zip
“`

zip ファイルを解凍すると、下記のファイルが生成されています。
“`
bugreport-sdk_phone_x86-RSR1.210210.001.A1-2022-09-10-15-05-50/FS/data/anr/anr_2022-09-10-15-05-30-781
“`
※ファイル名は ANR が発生し

元記事を表示

【Flutter】tutorial_coach_mark の使い方

## 初めに
tutorial_coach_mark とは、以下のように、特定の Widget にフォーカスして、ユーザにアプリの操作方法を理解してもらうためのチュートリアルを作成するパッケージです。

[公式ページ](https://pub.dev/packages/tutorial_coach_mark)から引用

## 記事の対象者
+ アプリにチュートリアルを実装したい方
+ 操作が難しいアプリを開発している方
+ アプリに対して「操作がわかりにくい」とフィードバックがあった方

## 準備

### パッケージの追加
まずは[ tutorial_coach_mark パッケージ ](https://pub.dev/packages/tutorial_coach_mark/install)を「 pubspeck.yam

元記事を表示

android でLAN内のNTPサーバーに時刻を合わせる

# はじめに

時計大事ですよね。
私の持っているandroidはWifi専用運用のため、時刻を合わせることができず、困っておりました。
SIMがささっていれば、携帯基地局から時刻を取得することができるようなのですが、SIMすらないので、簡単に時刻がズレてしまいます。
root化するという手もあるかもしれませんが、あまりやりたくはないです。
これを何とかしようとGoogleさんに色々が聞いてみましたが、かなりハマったので、記録しておこうと思います。

# 環境

* Pixel 5a(SIMフリー版)
* Android 12
* SIMカードなし・Wifi接続のみ
* LAN外のNTPサーバーは参照不可

# DNSサーバーをLAN内にたてる方法(失敗)

Googleで「android ntp time sync」とかで調べると、どうも簡単には時刻同期できないということがすぐに分かりました。
もう少し調べてみると、情報としては古いですが、Android 4.1以降では、2.android.pool.ntp.orgにNTPサーバーがハードコーディングされているという情

元記事を表示

Baseline Profilesでアプリのパフォーマンスを向上させよう

以前 LT で発表した記事のテキスト化 & 補足です。

https://speakerdeck.com/numeroanddev/improve-app-performance-with-baseline-profiles

Baseline Profiles はアプリのパフォーマンス改善を見込めるものになっているので、ぜひ検証 & 導入を進めていきたいですね。

## Baseline Profiles とは?

– ART (Android Runtime) がプリコンパイルするときに使用するアプリのクラスとメソッドのリスト
– Baseline Profiles を使うことでアプリの起動時間の短縮、ジャンクの削減、全体的なパフォーマンスの向上が見込める
– Android 7.0 ~ 最新 OS までに効果がある
– アプリのインストール後やアップデート後の初回起動はプリコンパイルされていない状態のため、特にアプリの起動速度やパフォーマンスが落ちる

## なぜ Baseline Profiles が必要なのか

– これまで Cloud Profile として

元記事を表示

Android ViewModelとDataBindingを使ってみた

# はじめに
学習記録
開発業務でも使用しているViewModelとDataBindingを触ってみる

# 導入
・ViewModelを使用するため、以下設定
“`java:build.gradle
implementation ‘androidx.lifecycle:lifecycle-extensions:2.2.0’
“`
・DataBindingを使用するため、以下設定
“`java:build.gradle
// android{・・・}内
buildFeatures {
dataBinding = true
}
“`
続いて、各ファイルの編集・作成
・ViewModel
“`java:MainViewModel.kt
package com.example.sampleapp

import androidx.lifecycle.ViewModel

class MainViewModel : ViewModel() {
// 画面に表示するデータ
var text = “This is Sample Message”
}

元記事を表示

OTHERカテゴリの最新記事