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

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

Kotlin1.4で使いたい新機能を一部紹介する

# 背景
8/17に`Kotlin 1.4`がリリースされました。
Androidエンジニアの自分から見てこれは使いたいと思えるものが多かったので、使いたいものを抜粋・紹介したいと思います。

# 新機能

## SAM変換のKotlin対応

これまでSAM(=Single Abstract Method)変換はJavaのコードにのみ対応しているという状況でした。
例えばクリックイベントでよく使う`View.OnClickListener`はjavaで書かれているためラムダ式の省略など様々な形でかけていたわけですね。

“`View.java
/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.

元記事を表示

2020年版RecyclerViewの使い方 〜 RecyclerView + ListAdapter + DataBinding + LiveData + ViewModel 〜

# tl;dr

* UIのリスト表示は、{RecyclerView + androidx.recyclerview.widget.ListAdapter + DataBinding + LiveData + ViewModel} on Kotlinで構築する
* ListAdapterに引数として何を渡すかは要件(やりたいこと)による。最小ケースでは引数なしもありえる
* executePendingBindings() is 大事
* LayoutManager is 大事
* 今回のサンプルのリポジトリー:https://github.com/quwac/howtouserecyclerview2020

# この記事は?

RecyclerViewの使い方のメモです。
2020年時点のRecyclerView実装の記事の中ではベストな方法、かつユースケースが網羅的になるように書きます。

個々の技術要素の使い方よりも技術要素同士をどう組み合わせるかに主眼を置いています。
DataBinding、LiveData、ViewModel、Kotlinそのものの使い方については別途検索

元記事を表示

HUAWEI ML Kitを使用した銀行カード認識の実装方法

## 概要
以前の投稿では、HUAWEI ML Kitを使用してSmile-CameraとID用写真のDIYアプレットを実装する方法について検討しました。今回の投稿では、銀行カード認識機能の実装方法をご紹介します。この機能により、ユーザーは銀行カードを瞬時に紐付けることができます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696852/60ab3e77-c3a4-7d16-2e63-f52657c0a6bc.png)
## 銀行カード認識の用途
開発に着手する前に、銀行カード認識機能の用途について確認しましょう。銀行アプリやeコマースアプリなど、支払い機能を備えたアプリに最適です。このようなアプリには、いくつか共通の要件がある場合が多いです。

– 銀行カードの紐付け

ユーザーは自分の銀行カードを紐付けて、オンライン決済を素早く行うことができます。

– 銀行振込

ユーザーは同一銀行内または異なる銀行の口座間でお金を振り込むことができます。

– 本名での認証とID確認

ユーザ

元記事を表示

HUAWEI ML Kitでフェースステッカーをアプリに組み込む方法

##概要
今では、かわいく、おもしろいフェースステッカーをどこでも見るようになりました。カメラアプリだけでなく、ソーシャルメディアやエンタテイメントのアプリでも使用されています。今回の投稿では、HUAWEI ML Kitを使用して2Dステッカーを作成する方法をご紹介します。近いうちに、3Dステッカーの開発プロセスをお知らせしますので、ご期待ください。
##シナリオ
ビューティカメラやソーシャルメディアアプリ(TikTok、Weibo、WeChatなど)など、写真を撮影して編集する場合に使用するアプリは、画像のカスタマイズに使用できる幅広いステッカーを用意しています。このようなステッカーを使って、ユーザーはより人目を引き、共有できるコンテンツを作成できます。
##準備
###Huawei Mavenリポジトリをプロジェクトレベルのbuild.gradleファイルに追加する
**Android Studio**プロジェクトのルートディレクトリにある**build.gradle**ファイルを開きます。
![2.1.png](https://qiita-image-store.s3.ap-no

元記事を表示

【Flutter, Dart, freezed】Bad state: Unexpected diagnosticsでbuildが終わらない不具合

# TL;DR
`pubspec.yaml` に以下の2つを追加してください

“`pubspec.yaml
dependencies:
analyzer: ^0.39.14 <- 追加 dev_dependencies: build_runner: ^1.10.0 <- 追加 ``` ## 環境 ```sh # fvmを使用 [✓] Flutter (Channel unknown, 1.20.2, on Mac OS X 10.15.5 19F101, locale ja-JP) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3) [✓] Xcode - develop for iOS and macOS (Xcode 11.6) [✓] Android Studio (version 4.0) ``` ## 症状 - `Bad state: Unexpected diagnostics:` が大量に表示される - `[INFO] 1.6s elapsed

元記事を表示

[MVVM-DataBinding] 数字入力のEditTextに単位とセパレーターを自動で追加する

## 背景

数字入力に限定した`EditText`(`android:inputType=”number”`)に対して、3桁ごとのセパレーターと`suffix`として単位をつけたい

理由
・ユーザーに極力数字以外のものを受け付けたくない
・桁数と単位でより入力内容をわかりやすくしたい

## 環境
MVVM-DataBinding
※導入方法は省略

## 実装

今回は長さ(m)を例に実装します

やりたい事は、もしユーザーが`1222`と入力したとすると、`1,222m`と`EditText`に表示させたいです

### XML

“`snippet.xml


(略)

元記事を表示

あのファーウェイスマホのカメラ機能をアプリにも取り入れる?

##はじめに

ファーウェイのスマートフォンといえば、高性能なカメラ機能で有名ですよね。
アパーチャモード、夜景モード、ポートレートなどの処理にもハードウェアやSoc性能に依存します。
アプリ単体だと簡単に作れない機能です。

##HMS CameraKit

現在販売しているファーウェイのスマートフォンにはHMS(Huawei Mobile Service)が搭載していて、アプリ開発向けの独自のSDK群が提供しています。
もちろん一般的なPushやIn App purchaseなどのSDKは提供している以外に、HUAWEI独自のSDKもアプリ開発者に提供しています。
それを取り入れたアプリをファーウェイ独自のアプリストアAppGallery公開すれば、全世界のファーウェイスマートフォンユーザーに配信することができます。

その中に、ファーウェイスマートフォンで使われているカメラ機能をSDKとして提供されたのがCameraKitです。
![アパーチャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67

元記事を表示

既存のAndroidアプリは意外と簡単にHMS対応に改修できます

#はじめに
この前の記事では、HMS(Huawei Mobile Service)とは何なのかについて説明しました。今回は、どうやって既存のAndroidアプリを改修すればHMS端末(GMSが使用できないHuawei端末)で使えるようになるのかについて紹介したいと思います。タイトル通り、実は既存のAndroidアプリは意外と簡単にHMS対応に改修することができます。

#SDKの使用状況によるアプリの分類

前回の記事で紹介したように、HMS端末ではGMSとfirebaseのSDKが使用できません。
しかし、HMS端末のOSはAOSP(Android Open Source Project)ベースですので、Androidのネティーブコンポーネントは継続的に使用できます。
AOSPとGMSの関係についてはこちらの記事でかなり分かりやすく紹介されていますので気になる方は確認してください。
https://qiita.com/hirossyi73/items/700e1be8e2b8f472b098

また、GMS以外のサードパーティーSDKの場合、GMSに依存していなければ継続的にHMS端

元記事を表示

【Flutter/ Dart】外部アプリを起動して画像をシェアする方法

## 概要

共有機能(UI」で言うと`<`のやつ)を実装するために試行錯誤した結果、採用した方法を記します。

## 結論
`esys_flutter_share `を使って簡単に実装できました。

ちなみに他に試したのは下記です。
– Platform Channelsを使ってネイティブのコードに処理を委譲(外部アプリを起動)する。
– shareプラグイン(画像のシェアができず断念)

## 設定

“`.yml:pubspec.yaml
dependencies:
esys_flutter_share: [version]
“`

※`flutter pub get`を忘れずに

## コード

impportして

“`.dart
import ‘package:esys_flutter_share/esys_flutter_share.dart’;
“`

この2行だけで終わり!

“`.dart
final ByteData bytes = await rootBundle.load(‘assets/image.png’);
await Shar

元記事を表示

【Android9.0 Pie Java】LINE風にチャット一覧画面→個人チャット画面の遷移アニメーションを実装(サンプルアプリ付)

## 環境
Android9.0 Pie Java

## はじめに
以前投稿した、
[【Android9.0 Pie Java】チャットアプリで横スワイプ→ダイアログ表示→削除を実装する](https://qiita.com/yuta-matsumoto/items/47f7f403a4c379a7a1b3)
の続きになります。

+ チャット一覧の要素を押すと右から左へ覆い被さるようにチャット画面のfragmentが重なる
+ < ボタンを押すと左から右へチャット画面のfragmentが消える

以下のGifのように動作します。
![3731939bc2a2b548bce0dd3ba2b8d615.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/fd4a29a4-ee5c-ec83-0df7-69a6daa986d6.gif)

## 完成品URL
全てのコードを載せると大変なことになるので、この記事では省略しています。
チャット画面のlayoutやAdapter等のファイルも含めてD

元記事を表示

DHHのクロスプラットフォームアプリ・アーキテクチャ

DHH(Ruby on Rails作者)による「Basecamp」スマホアプリのアーキテクチャ解説記事について、所感をメモ。

## 記事

>Basecamp 3 for iOS: Hybrid Architecture
>https://m.signalvnoise.com/basecamp-3-for-ios-hybrid-architecture/

## 所感

ざっくりいえば「画面遷移はネイティブ / 画面の中身はHTML」というように役割分担したアーキテクチャになっている(実際はもっと細かいが)。HTMLを使ったスマホアプリはUXが問題になりやすいが、これによってうまく回避している。

確かに静的なテキストや図、ちょっとしたUIなどを表示するだけであれば、HTMLもネイティブもほぼ区別はつかない。むしろWebフロントエンドのための数々のフレームワークを活用でき、ネイティブより早くきれいにできる場合すらある。しかし、ネイティブのインタラクションや画面遷移をHTMLが模倣することは難しい(AndroidのバックキーやiOSのスワイプバックの扱いの問題もある)。そこで画面遷移周

元記事を表示

【Android】RecyclerViewの使い方メモ

# RecyclerViewの作り方

– RecyclerViewを使うたびに忘れるので、メモ用にまとめます。

## 手順
1. [依存関係の追加](## 依存関係の追加)
1. [記述するもの](## 記述するもの)

## 依存関係の追加
– まずは依存関係の追加。他の記事だと、v7のサポートライブラリを使ってるものがありますが、API 29からdeprecatedされてるので、androidxを入れましょう。

“` gradle:build.gradle
implementation ‘androidx.recyclerview:recyclerview:1.1.0’
“`

## 工程
– layout
– RecyclerViewのレイアウト
– listの1個のレイアウトファイル

– RecyclerViewのAdapaterクラス
– ViewHolderクラス
– layoutManeger

## layout
– RecyclerViewのレイアウト

– サンプルコード

“` kotlin

元記事を表示

AWS IoT + Cognito + IAM + Amplifyでユーザ認証・IoTデバイスと通信するAndroidアプリ

## 目的
IoTデバイス(例えばLEDや各種センサ、それらを接続したRaspberry Piなど)をモバイルアプリから操作したい時、あるユーザが所有しているデバイス以外は操作できないようにデバイスとユーザは一意に紐付けられている必要があります。
上記を実現するためにAWS IoT・Cognito・IAM・Amplifyを使用してユーザ認証機能を実装し、ユーザに紐付けられたデバイスとMQTTメッセージを双方向にやり取りできるAndroidアプリを作成します。

ソースコード→[GitHub](https://github.com/sutoo-the-cat/SignedInPubSub)

## 使用環境

– Windows 10
– Android Studio 4.0.1
– Kotlin 1.4.0
– Amplify CLI 4.27.3
– Pixel 3a(Android 10)

## 前提条件

– AWSアカウント作成済み
– AWS IAMユーザ作成済み
– [Amplify](https://docs.amplify.aws/lib/q/platform/and

元記事を表示

スマホ(Android)をPCにつないでブラウザの要素の検証をする

# はじめに
デプロイしたWEBサイトをスマホ(Android)で表示するとどうしても思ったデザインにならないので
どうにかしてスマホで開いているブラウザをDevtool(F12ツール)で見れないか調べてたらChromeなら見れました。
忘れないようにメモ。

**Android 端末のリモート デバッグを行う**
https://developers.google.com/web/tools/chrome-devtools/remote-debugging?hl=ja

# 手順
– スマホの設定から「開発者向けオプション」→「USBデバッグ」を有効にする
– スマホをPCにUSB接続
– chrome://inspect/#devices にアクセス
– 「Device」と「Remote Target#LOCALHOST」が表示される
– **初めての接続の場合はスマホのドライバがPCにインストールされる**
– **スマホ側にデバッグを許可しますか?的なポップアップが出るので許可を選択**
– しばらくすると「Remote Target#LOCALHOST」の下にスマホ側Chro

元記事を表示

Android Studio で Material Icon をさっくり取り込む

## はじめに

– Android Studio 3.4 の機能で`Resource Manager`が追加されています。
– この`Resource Manager`を利用する事で、Material Icon をアプリにお手軽に取り込む事ができます。

– Resource Managerに関する詳しい説明は[こちら](https://developer.android.com/studio/write/resource-manager?hl=ja)

## 順序

#### Step1:準備
– Android Studio 4.0 を利用してアプリケーションを作成

#### Step2:Resource Manager を開く
– Android Studio 4.0 であれば、画面左端に縦書きで`Resource Manager`という選択エリアがあります。
– 無ければメニュー -> `Tools` -> `Resource Manager` を選択
– これで今のアプリ内で利用しているリソース一覧が表示されます。

![スクリーンショット 2020-08-23 15.

元記事を表示

MotionLayoutで元のVisibilityを保持したままアニメーションを実行する

# はじめに
MotionLayoutは手軽にアニメーションを管理出来てとても便利なんですが、デフォルトの動作だと元のvisibilityを無視してアニメーションを実行するとViewが表示されてしまいます。こんな感じ↓
ですが、利用する際はINVISIBLEやGONEの場合はその非表示の状態を維持したままアニメーションさせたい場合がほとんどだと思いますので、今回はそのやり方を説明します。

# やり方
### 修正前のコード
まず前述のGIFはこのようなコードで実装されています。

“`gradle:app/build.gradle
// NOTE: MotionLayoutを利用するにはconstraintlayout:2.0.0以上を利用します
implementation ‘androidx.const

元記事を表示

[iOS] [Android] [Crashlytics] Fabric SDKを使っているアプリはそろそろヤバイ

Crashlyticsを利用中のアプリについて、Fabric SDKを組み込んでいる場合、**2020年11月15日までにSDKを入れ替えてリリースしないと、Firebase Crashlyticsでクラッシュレポートを見ることができない**、ということになります。

Firebase Crashlyticsの公式ドキュメントより:

>注: Fabric SDK は非推奨になりました。
>Fabric SDK がアプリのクラッシュを報告するのは 2020 年 11 月 15 日までとなります。
>この日をもって、Fabric SDK と古いバージョンの Firebase Crashlytics SDK はアプリのクラッシュの送信を停止します。
>引き続き Firebase コンソールでクラッシュ レポートを表示するには、Firebase Crashlytics SDK のバージョンを Android の場合は 17.0.0 以降に、iOS の場合は 4.0.0 以降に、Unity の場合は 6.15.0 以降にアップグレードしてください。

https://firebase.goog

元記事を表示

Nuxt + Vue + Cordovaでアプリ開発をしよう!

こんにちは、フロントエンドの初心者のYちゃんです。スマートフォン向けのアプリケーションを作るために、自分の使えるフレームワークであるVueやNuxtを使ってやろうと思っていろいろ調べていると、Cordovaというフレームワークでアプリケーションを作れるというのを知って、いろいろ試したんですが、いろいろ詰まったので備忘録的に書き記しておこうと思います。

# 開発環境
私はWindowsでもろもろをやる変態エンジニアなのでいろいろ詰まってた感はあります。

– Windows 10 Pro Insider Preview 2004 Build 20190.1000(変態なのでInsider Previewerですがあまり気にしないでくださいw 普通のWindowsで十分だと思いますw)
– Android Studio Ver 4.0.1
– とりあえずインストールするだけでOK
– Node.js v12.18.2
– yarn 1.22.4
– Git for Windows 2.27.0
– Windows上で軽くUnixコマンドを扱うために入れています。`packag

元記事を表示

Androidでストレージの物理パスを取得する

# はじめに

Androidにおける、ストレージボリュームへの物理パスを取得する方法について述べます。
ただし、全てのAndroid端末で動作を保証するものではありません。

# コード例

開発環境: Android Studio 4.0.1
動作端末: 各バージョンのエミュレータ端末
言語: Kotlin

例として、ストレージの物理パスをキー、ストレージのラベルを値とするMapデータを出力するコードは次のようになります。

“`kotlin
val map: Map = when {
Build.VERSION.SDK_INT>= Build.VERSION_CODES.R -> {
// Android 11- (API 30)
sm.storageVolumes.mapNotNull { volume ->
val path = volume.directory?.absolutePath ?: return@mapNotNull null
val l

元記事を表示

Unity、Android、GooglePlayConsole、Android App Bundle と APK、アップロードできなかった問題

UnityでビルドしたAndroid向けアプリのAPKデータを、GooglePlayConsoleにてアプリのリリースをしようとしたら、
『API28以下のアプリはもう受け付けないので、API39以上、もしくは最新版にてビルドしてリリースしてください』
みたいな文言のエラーが出ました。

結論:
下記の手順を踏んだのち、
【Unity(windows版)】→【Edit内、Preference】→【Esternal Tools内、Android内、Android SDK Tools Installed with Unity(recommended)】のチェックを外した後、最新のSDKのパスを正しく参照してからビルドしたら、上手くビルドしてくれました。
ただし、これからも上手くいくかは分からないのであしからず。

手順:

話はリリースしようとしてエラーが出た頃に戻りますが、
ともかくAPIはアプリをスマホ等に最適化させるインターフェイスらしいです。
通常ならば、
【Unity(windows版)】を開く→【Fileタブ内、BuildSetting】→【PlayerSetting】→【

元記事を表示

OTHERカテゴリの最新記事