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

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

Flutter入門メモ:開発環境構築編

## 経緯

久々に新規でモバイルアプリでも作ろうかと思い、
一人で趣味で作るレベルだと、Swift・Kotlinでそれぞれ構築するのは掛けられる工数的に現実感が無いので、
1ソース系を試してみようかと。

1ソース系は他にも選択肢がありますが、
React Nativeはなんか好みではないのと、Apache Cordovaは嫌な思い出しかないので、
流行ってるFlutterでやれないかなと、[公式](https://flutter.dev/docs/get-started/install)を見ながら少し試してみる事にしました。
今回は開発環境までのメモ。

## 確認環境

* macOS Catalina
* Essential Essential Phone PH-1 (Android 10)

### 前提

* [Homebrew](https://brew.sh/)がインストールされている。

※今回確認を実施したMacでは、XcodeやIntelliJ、VS Codeが予めインストールされています。

## 手順

Flutterのインストール。

“`shell
$

元記事を表示

【Kotlin】DialogFragmentからActivityへ値を渡す

###はじめに
AndroidアプリでDialogFragmentを実装する際、普通の?(はい、いいえの二択のヤツ)ダイアログではなく、EditTextなどを含むダイアログを作成しその値をActivityへ渡す方法です。
やり方はいくつかあるらしいのですが、今回は新しくインターフェースを実装するやり方です。
Fragment自体の実装については割愛する部分が多めです。
おかしな所があれば教えていただけると幸いです!

###構成

MainActivity.kt:Fragmentの呼び出しとFragmentから受け取った値を表示するだけ。
CustomDialogFragment.kt:ダイアログ用のFragmentです。
dialog_layout.xml:EditTextを含むダイアログ用のレイアウトファイルです。

###レイアウト

先にレイアウトを実装しておきます。
MainActivityはなんでも良いので割愛します。
dialog_layout.xmlはres/layout下に作成します。

“`xml:dialog_layout.xml

元記事を表示

AndroidのRecyclerViewでフォーカスを中央にキープする

AndroidのRecyclerViewでフォーカスを中央にキープする必要があり、ググったのですが日本語の記事がなかったので、記事にします。

## やりたいこと
メニュータブを表示する際に、フォーカスを中央にキープする。
※menu1フォーカス中もmenu2フォーカス中もセンターにキープする。
 

## ポイントは3つ
– HorizontalGridViewを使う。(縦の場合はVerticalGridView)
– windowAlignmentをWINDOW_ALIGN_

元記事を表示

KeyStoreのjksファイルを復元する方法

拡張子jksは、KeyStoreファイルです。(ここではAndroidアプリ開発で利用)

CIの環境変数に入れようと思ったところ、中身がバイナリでした。

## 方法

以下でテキストにデコードできます。

“`sh
openssl base64 -A -in .signing/release.jks
“`

自分の場合は2764文字のテキストが出力されました。

CI上では、↑で出力されたbase64テキストを環境変数に設定して、
以下のようにまたjksにエンコードして使うのが一般的のようです。

“`sh
echo $KEYSTORE_BASE64 | base64 -d > .signing/release.jks
“`

## note

タイトルはよく知らない人(自分)がこんなキーワードで検索する。というのを考えて設定しました。

中身自体はいろんな記事にありますがQiitaはピンポイントで索引できるといいなと思いました。

元記事を表示

Resources – Sams Class

#日本人
SAMS CLASSさんと共有したいと思います。
お楽しみください。
https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info

サムスクラスオールドリサーチ:
https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info/old-research.htm

サムスクラスオールドクラス:
https://translate.google.com/translate?hl=&sl=en&tl=ja&u=https%3A%2F%2Fsamsclass.info%2Fold-classes.html

サムスクラスワークショップ-モジュール環境は、連邦政府の標準品質のワークショップに大学レベルのトレーニングを提供します。知識と知恵。

https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info/w

元記事を表示

[Android]HomebrewでAndroidSDKをインストールする。

– Mac利用者で、`Homebrew`を利用してソフトウェアを管理している方、`AndroidSDK`も`Homebrew`で管理したい方向けです。

## `android-sdk`のインストール

– インストール方法は以下です。

“`
$ brew install android-sdk
“`
## `platform-tools`のインストール

– `Homebrew Cask`に`platform-tools`という`Formulae`がありそちらからもインストールできますが、先ほどインストールした`android-sdk`に付属している`sdkmanager`を利用してインストールします。
– `android-sdk`は不要で、`adb`や`fastboot`を利用したい場合、`platform-tools`単体でインストールすることも可能です。 そのため独立した`Formulae`が用意されているのでしょう。
– [SDK Platform-Tools リリースノート  |  Android デベロッパー  |  Android Developers](htt

元記事を表示

PeerRadioではMVVM+Repositoryのアーキテクチャを使用しております①

#もくじ
・MVVM + Repositoryについて
・階層について
・DataClass実装
➡ 次回はRepositoryとViewmodel部分の実装について書きます

#MVVM+Repositoryとは
アーキテクチャの1つです。他にも様々なアーキテクチャがあるのだと思いますが、[公式ガイド](https://developer.android.com/jetpack/guide?hl=ja#recommended-app-arch)ではMVVMの形式が推奨されておりますので、PeerRadioでもMVVMを使用しております。しかし、そこにRepositoryというのがくっついていますね。これはDBを扱う部分で、MVVMから分けて作っているということです(分けるのが必須ではないです)。

MVVM+Repositoryの登場人物とその関係性は以下の画像の通りです。
![スクリーンショット 2020-11-27 113309.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/37

元記事を表示

Androidアプリbuild without IDE

## 最初に
プログラミングを始めた時、C言語、JavaでHello Worldを作成したことを思い出した。
IDEがなくて、テキストエディターとコマンドラインで作成、コンパイルして実行できました。
Androidの勉強ですが、Android Studioを使って、Hello Worldのプロジェクトを作成する記事はほとんどです。
Androidアプリの構成とビルドについて、もっと深く理解するため、本編はIDEを使わなくて一からプロジェクトを作成し、実行するまで紹介します。

## ビルドツール
まず、Gradleをインストールします。
AndroidプロジェクトはGradleベースで複雑なビルドシステムを構築しているため、Gradleの勉強は必須になります。
https://gradle.org/releases/ にて最新バージョンのGradleをダウンロードしてインストールします。
すでにAndroid Studioで実行したことがあれば、ダウンロード、インストールしなくてもいいです。

“`
Linux、Mac:
~/.gradle/wrapper/dists
Windows

元記事を表示

flutter build apk –release だけ Could not resolve all files for configuration ‘:releaseRuntimeClasspath’.エラー

flutter build apk –releaseのときだけ、以下のエラーが出てapkが作れない問題でハマりました。

“`
FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
———–
* What went wrong:
Execution failed for task ‘:generateReleaseRFile’.
> Could not resolve all files for configuration ‘:releaseRuntimeClasspath’.
> Could not find com.google.firebase:firebase-bom:25.12.0.
Searched in the following locations:
– https://storage.googleapis.com/download.flutter.io/com/google/firebase/firebase-bom/25

元記事を表示

[Android]Navigation Component で StartDestination を popBackStack したときの動作

# はじめに

Navigation Component で StartDestination を popBackStack すると currentDestination が null になると以下に記載がある。currentDestination が null になったときの挙動について詳しくは書かれてはいなかったので調べてまとめようと思います。(本記事は Navigation Component v2.3.1 で動作確認しています。)

“`
https://developer.android.com/guide/navigation/navigation-navigate?hl=ja#back-stack

このメソッドが false を返すと、NavController.getCurrentDestination() は null を返します。
新しいデスティネーションに移動するか、アクティビティに対して finish() を呼び出してポップを処理する必要があります。
“`

# 検証環境を構築する

次のような FirstFragment と SecondFragment

元記事を表示

3. Android学習 イベントリスナー編

**勉強できること**
Viewに対するイベントなどを検知して、それをトリガーに処理を実行できるようになる。

**環境**
AndroidStudioのバージョン:4.0.1
言語:Java

# イベントリスナーとは
スマートフォンの操作では、タップイベント、長押し、スクロール、戻るボタン操作などが発生します。
それらを検知するものがイベントリスナーです。

# リスナーの種類
イベントリスナーを抜粋して紹介します。

|リスナー名|メソッド|詳細|
|:–|:–|:–|
|クリックイベント|onClick()|ボタンなどのViewに対するタップ(クリックイベント)を検知する|
|長押しイベント|onLongClick()|ボタンなどのViewに対する長押しイベントを検知する|
|ハードウェアボタンイベント|onKey()|ホームボタンや戻るボタン押下時を検知する|

他にもViewによりスクロールや、タッチイベントなど色々なクリックリスナーが提供されています。
必要都度調べてみてください。

# 記述例

“`java:MainActivity.java
public

元記事を表示

【Android】JavaでSHA256を計算するアプリを作ってみた

# 雰囲気

なんか、
![Screenshot_20201126-222656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188881/0033a147-5904-7541-2ce1-c9cb96ac467e.png)

こんな感じで動く。
![Screenshot_20201126-222702.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188881/29f35b06-0f6b-acf0-ae69-ac055df843c9.png)

# 環境

Windows10
AndroidStudio 3.5.0.0
Android SDK 26.1.1
(Pixel OS10で動作確認)

# MainActivity.java

“`java
package com.weare2434.sha256;

import androidx.appcompat.app.AppCompatActivity;

imp

元記事を表示

BigDecimal の stripTrailingZeros 使ってる人は気をつけて

## はじめに

お仕事で BigDecimal の [stripTrailingZeros](https://developer.android.com/reference/kotlin/java/math/BigDecimal#stripTrailingZeros()) というメソッドを使っていて悲しくなったので記事にしました 😥

## stripTrailingZeros って何?

BigDecimal のメソッドで、末尾のゼロが削除された新しい BigDecimal を返します。

簡単にいうとこんな感じ

> 0.00 であれば 0
0.10 であれば 0.1

## 何があったのか

動作確認をしていると、 0.00% と表示されてしまうことがありました。

「あれ?ちゃんとエミュレーターでも動き確認してたのになぜ??」

調べてみると stripTrailingZeros が正常に動いてなさそう、、!

なぜ〜〜〜〜 :rolling_eyes:

## 原因

なんと、JDK7 だと正常に動作しないとのこと。。。

そりゃないよ。。

なので一部の An

元記事を表示

Androidで始める機械学習2 (FirebaseML CloudAPI)

# はじめに

前回 [エッジでサンプルを動かす記事](https://qiita.com/marchin_1989/items/517885984167e6855c13)を書きましたが、今回はエッジ(MLKitやTensorflowLite)ではなく、FirebaseMLのCloudAPIを利用してみました。

他にもありますが、今回は以下のAPIを試すために、Androidの[サンプルアプリ](https://github.com/marchin1989/FirebaseMLSample)を作成しました。

– Text Recognition
– Image Labeling
– Landmark recognition

# サンプルアプリについて

写真を撮ると、その画像をFirebaseMLのCloudAPIに投げ、結果を表示します。
右上のボタンでAPIを切り替えられます。

AndroidでSpinner形式のDatePickerDialogを表示する

AndroidでSpinner形式の `DatePickerDialog` を表示する方法を解説します。

![Spinner形式のDatePickerDialog](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67657/11c1264e-584b-4f0b-dc8a-aed3263a0bc4.jpeg)

本記事のサンプルコードについては [こちら](https://github.com/yhirano/SpinnerDatePickerDialogSampleAndroid) に置いてあります。

## コード

### テーマ

テーマを下記のように設定します。
`android:datePickerStyle` に `spinner` を子要素に持つスタイルを設定します。

“`xml:themes.xml

OTHERカテゴリの最新記事