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

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

選択可能なRecyclerViewを作る

##RecyclerViewって機能なにもないよね
僕自身、Android開発をはじめてから1年ほどはListView信者でした。「だって**RecyclerViewって機能なにもないし**、**ListViewの劣化版でしょ?**なんか難しそうで使いづらいし、**生理的に無理**」と思っていたんです。ListViewにはDividerやFastScroll、ChoiceModeだってある。それなのに後継の**RecyclerViewには何も備わっていない**じゃないか!皆さんもそう思っていた時期があったのではないでしょうか。

しかし実際はRecyclerViewのほうが扱いやすいんですよね。これが栄えている理由です。僕自身、ListViewのほうが簡単に実装できるとしてもRecyclerViewで実装してしまいます。昔、**徹夜で必死に**RecyclerAdapterを作る練習をした成果かもしれませんが、後の拡張性を考慮するとRecyclerViewで実装したほうがいいんです。今ではListViewを裏切ってRecyclerView信者になっています。

RecyclerView

元記事を表示

【初心者向け】Googleが開発したFlutterとは?効率的に学習する方法もご紹介

皆様、こんにちは!マイスター・ギルドのフクロウと申します。
今回はGoogleが開発した、フリーでかつオープンソースのフレームワークであるFlutterについてを簡単にご紹介します。

#Flutter(フラッター)とは
使用言語:Dart
開発環境:windows、またはMac
開発ツール:Android Studio またはVisual Studio Code

Googleが開発したAndroid、iOS、WEBアプリの開発を行うことができるマルチプラットフォームに対応したフレームワークの名称
2018年12月4日に初の正式版「Flutter 1.0」のリリースが発表されたので、比較的新しいフレームワークと言えます。
WindowsとMacの両環境でAndroid/iOSの開発は可能だが、WindowsではAndroidしか実機テストやリリースはできないです。iOSの実機テストやリリースには、別途 Xcodeが必要になります。

### 開発においてのメリット
・WEB開発や、スマホアプリ開発では、複数の言語を学ぶ必要があるが、FlutterではDartを学ぶだけで開発が可能。(

元記事を表示

【Android】uses-featureってなに

## 背景
– [CameraX](https://developer.android.com/training/camerax?hl=ja)の[codelabs](https://codelabs.developers.google.com/codelabs/camerax-getting-started/#0)で、AndroidManifestにuses-featureを記述していたのですが、何者ってなったので調べました。
– 公式を見てもらえたら…笑 [公式のリンク] (https://developer.android.com/guide/topics/manifest/uses-feature-element?hl=ja#features-reference)

## なにをするものか

> Google Play は、アプリのマニフェストで宣言された 要素を使用して、ハードウェアおよびソフトウェアの機能要件を満たさない端末からアプリをフィルタします。

– 要は、ここで宣言しておくと要件を満たしていない端末ではGoogle Playに表示さ

元記事を表示

色々なandroidx86派生OSの紹介

#目次
1.はじめに
2.androidx86
3.Phoenix OS
4.Prime OS
5.Bliss OS
6.OpenThos
7.要するに何が言いたいか
#1.はじめに
androidx86派生の紹介記事です。
androidx86とは、androidをPCでも使えるようにという考えによって作られたもの。
プロキシサーバーで規制されている中でYOUTUBEを見たいという邪念から生まれた奮闘記です。(アンドロイドアプリからなら開ける)たぶん海外のサイトとかもくまなくみたんで、見落としはないと思う。
では実際に紹介していきましょう。
#2.androidx86
たぶんandroidをPCで使えるOSの基礎になってるOS。
バージョンはいろいろあってアンドロイド9が最大
###利点
簡素。それだけ
###欠点
・ウィンドウを最大化しようとしても、まわりが黒くなるだけで最大化できない(ことが多い)。
・多分一番致命的な欠点。開けないアプリが多すぎる。
理由的には、アプリはだいたいARMベースでx86ベースではないからということらしい。そこらへんはエアプなので詳しくはよくわからん。

元記事を表示

PieChartまとめ(MPAndroidChart)

# はじめに
円フラフを作成する機会がありましたので、PieChartの使い方を自分ようにまとめます。

# Gradle
“`build.gradle
// Project
allprojects {
repositories {
google()
jcenter()
repositories {
maven { url ‘https://jitpack.io’ }
}
}
}

// Module
dependencies {
implementation ‘com.github.PhilJay:MPAndroidChart:3.1.0’
}
“`

# 使い方
`activity_main.xml`にmy_piechartというIDでPieChartを定義。

“`activity_main.xml

元記事を表示

アプリ内広告について軽くまとめた

([Google AdMob](https://admob.google.com/intl/ja/home/)を基本参考資料としてます)

#アプリ内広告とは
個人でアプリ開発してる人がお金を儲けるためのマネタイズ方法の一つ。
スマホでゲームをしてたりするとちょいちょい全画面表示されたり、突然30秒くらい動画が流れ出して操作を阻害してくる若干うざったいアレ。

#スマホアプリで稼ぐ方法って?
アプリ広告以外にもいろんなパターンがある

**有料アプリモデル**

アプリに価格をつけてリリースし、購入してもらいます。
あるいは、特定の機能を制限した無料版のアプリと全機能を解放した有料版アプリの両方をリリースするパターンもあります。無料版アプリでユーザに使用感を試してもらい、その後有料版へのアップデートを促します。

**アプリ内購入モデル**

IAP(In App Purchase)と呼ばれる方法。アプリ自体は無料で提供し、ユーザが追加機能を獲得したい場合

元記事を表示

NavigationComponentで画面の状態を保存したままstartDirectionに戻る方法

#やりたいこと
NavigationComponentでstartDirectionにあるFragmentへ一気に戻りたい場合、皆さん[Global Action](https://developer.android.com/guide/navigation/navigation-global-action)を使っているのではないでしょうか。

私もこのGlobal Actionで戻るように書いたのですが、例えばstartDirectionの`HogeListFragment`がRecyclerViewのscrollableなViewで、スクロール位置などの状態を保ちたい場合は、Global Actionだと難しいです。

例えば以下のようなGlobal Actionがあるとすると、

“`xml

Raspberry pi 4 と Android 10 python勉強するのにどちらがコスパが良いか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/7f5c7b60-8182-191a-5a83-808e518863d2.png)

#どちらも14000円以下で手に入る。
###Raspiは、GPIOがついているけどAndroid10は、ついていない。
#####Androidは、液晶・タッチパネルがついている。しかも、Rakuten Unlimitが使える。一年無料!電話にもなる!
Raspberry pi 4クワッドコアで Android 10 (Umidigi A7)オクタコアである。クロックも1.5GHez対2.0GHZである。
pythonのようなインタープリタを動作されるには、コア数と動作クロックの点で有利である。
#中華製のAndroid携帯電話は、手軽で安くLinuxや制御の勉強に最適である。C言語からPython,Go言語まで簡単に試すことができる。
##とりあえず、お試しでHello Worldを行う。

#1.PCと繋ぐUSBで接続する。ドライバーは、

元記事を表示

NavigationComponentで遷移した直後にIMEが出ない問題

#問題の内容
NavigationComponentを使ってFragment→Fragmentに遷移後、EditTextに`requestFocus()`していてもIMEが即座に表示されない問題に遭遇しました。

cursorはEditTextに表示されているので、focusが当たっていないわけではなさそうです。

新しいActivityをstartさせてFragmentを表示させれば問題なくfocusされてIMEも表示されるので、NavigationComponentに何か問題がありそうです。

同じような問題を抱えている方がいらっしゃいました→[Link](https://stackoverflow.com/questions/59843849/edittext-is-not-working-with-the-navigation-component-when-request-focus-called)
(回答なしで悲しい)

#調査
まず以下のようなコードで解消できるか試しました(focusが当たっていたら`showSoftInput`でIMEを表示、外れたら`hideSoftI

元記事を表示

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のスワイプバックの扱いの問題もある)。そこで画面遷移周

元記事を表示

OTHERカテゴリの最新記事