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

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

【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】→【

元記事を表示

【Android】画面遷移時に遷移元のActivityを終了する

Androidでアプリを作成する際に、戻るボタンでアプリを終了したいケースがあると思います。

Ex) ログイン画面から遷移後に戻るボタンを押したらアプリを終了させる。(ログイン画面に戻さない)

そのような際に、Activityを終了させる方法をまとめました。

# ActivityからActivityでの遷移時

“`MainActivity.java
Intent intent = new Intent(getApplication(), SubActivity.class);
startActivity(intent);
finish();
“`

# 画面A→B→C遷移時に、A,BのActivityを終了する(複数のActivityを終了したいとき)
Ex) A(初期画面)→B(サインイン画面)→C(メイン画面)でサインイン後、戻るボタンでアプリを終了させる時。

“`BActivity.java
Intent intent = new Intent(getApplication(), CActivity.class);
intent.addFlags(Inte

元記事を表示

Android 11 のACTION_OPEN_DOCUMENT_TREE制約を確認する

# はじめに

Android 11では、ローカルストレージのアクセス制限が強化されました。その一つとして、Storage Access Framework (以降SAF) のACTION_OPEN_DOCUMENT_TREEで指定できるディレクトリに以下のような制約が発生しています。

[Android 11 でのストレージに関する更新  \|  Android デベロッパー  \|  Android Developers](https://developer.android.com/preview/privacy/storage?hl=ja)

> **ディレクトリへのアクセス**
ACTION_OPEN_DOCUMENT_TREE インテントのアクションを使って以下のディレクトリへのアクセスをリクエストすることはできなくなりました。

> * 内部ストレージ ボリュームのルート ディレクトリ。
* エミューレートされているカードかリムーバブル カードかによらず、デバイス メーカーが信頼できるとみなす各 SD カード ボリュームのルート ディレクトリ。信頼できるボリュームとは、ほと

元記事を表示

[Android]Epoxy と Paging を組み合わせたサンプルと解説

# はじめに

Epoxyと Paging を組み合わせてページ毎にデータを読み込むリストを作成してみたいと思います。
アーキテクチャは Google が推奨している MVVM を利用して、次の手順で作成を進めます。

| No | タイトル |
| ——– | ——- |
| Step 0 | 必要なライブラリをセットアップする |
| Step 1 | Retorift でページ毎のデータを取得する |
| Step 2 | PagedList でページ毎のデータを管理する |
| Step 3 | EpoxyRecyclerView で表示する EpoxyModel を作成する |
| Step 4 | EpoxyRecyclerView で表示を制御する EpoxyController を作成する |
| Step 5 | 作成したクラスの動作を確認する |

完成イメージは次のような感じになります。

【Android】 intentについて

# 【Android】intentについて
– intentについては、散々こすられていますが、自分のまとめ的な意味も込めてまとめます。
– [こちら](https://developer.android.com/guide/components/intents-common?hl=ja)(公式ドキュメント)を見ていただければ、正直解決するかと思います、

## intentについて
– intentは、大体において、**別のアクテビティに遷移するとき**または、**別のアプリを開く時**のどちらかで使われます。

– そして、それぞれ以下のように呼ばれます。
– 別のアクテビティへの遷移 => 明示的intent
– 別のアプリを開く => 暗黙的intent

## 明示的intentと暗黙的intent
– 明示的intent
– 別のActivityに遷移するときに使います。

– 記述としては以下のような形

“` kotlin
val intent = Intent(今のActivity.this, 遷移先のActivity::class.java)
st

元記事を表示

初めてのFlutter アプリ開発およびパッケージ紹介

# アプリ開発(Android Studio環境下の開発とする)
1. start a new Flutter project
2. Flutter application
3. androidのネイティブアプリと同様の手順(名前作成)
4. ファイルの作成完了
5. lib file内に
– main.dart(ソースコード)
– pubspec.yaml(パッケージ定義)
6. ソースコードの編集が完了した場合,右矢印のrunをクリック,プログラム実行

## Flutter開発
### Hello Worldの実装
以下がHello Worldのプログラムとなる. /libs/main.dartを書き換え

“`dart

import ‘package:flutter/material.dart’;

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {

元記事を表示

Flutter ios 環境構築メモ

***<追加で更新中 最終更新日(2020/08/22)>***

本文は,`Flutterアプリ開発においてiosでのErrorが起こった内容および,それに対してTryしたことのメモ.`
自身が開発中に発生したエラーを共有させていただきます.また違う解決策があれば教えていただけると嬉しく思います.

## Error1:Warning: CocoaPods not installed.

***Debug時に発生するエラー内容***

1. 通常

“`shell

brew install cocoapods
pod setup
“`

2. 1,で完了しない場合

“`shell

sudo gem uninstall cocoapods
rm -Rf Pods/
rm -Rf Podfile
rm -Rf Podfile.lock
rm -Rf Runner.xcworkspace
brew link –overwrite cocoapods
flutter build ios
“`

上記の2つを行うことで解消することができた.

## Error2: err

元記事を表示

【Flutter】Android studio でエミュレータが見つからない場合の対処法

## 事象
エミュレータは起動されているのに、’Loading…’の表示が消えず、Buildできない自体が発生。

エラーの内容は以下。

“`
emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature. Please use -read-only flag to enable this feature.
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/03ab8a6f-a625-b6cb-a7fe-779df917f0cc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/8c2e6576-ebcb-824f-bf4d-64c259de15cc.png)

## 解決方法
ユーザのルートディレクトリ直下の’.android

元記事を表示

なぜBLEペアリング時に連絡先と通話履歴のアクセスパーミッションが要求されるのか

# はじめに
* AndroidではBLEペアリング時にペアリングの許可を求めるダイアログが表示されますが、連絡先や通話履歴にアクセスするアプリではないのにも関わらず以下のような要求が表示されることがあります。

* このチェックボックスが表示されてしまう理由について調べたことを備忘録的に残しておきます。
* この記事にはチェックボックスを消す方法については書いていません。

# 関連記事
* 同様の質問がポストされているものの、2017年時点ではチェックボックスを消す方法は無いとのこと。
* https://stackoverflow.com/questions/42647579/change-pairing-dialog-appearance-in-android

* ペアリングプロセスを自前で実装すれば、そもそもポッ

元記事を表示

Pixel Buds欲しい、作ってしまえ

Pixel Buds欲しいんですが、高くて手が出ない。
なので、自分で作ってしまいました。

<用意するもの>
 Android 8.0以上スマホ
 M5StickCのような、ESP32でボタンがあるもの
 通話可能なBluetoothイヤホン

<できること>
 スマホをポケットにいれて、イヤホンで音楽を聴きながら、
  ・OK Googleで、イヤホンで質問し、イヤホンで応答を聞ける
  ・目的地までの距離を音声でイヤホンで教えてくれる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/1f0f541d-854b-0a3f-4dcf-fcaf07e17e8e.png)

<実装したこと>
・M5StickCとBLE接続し、ボタン押下を待ち受けます。
・AndroidでGPSの緯度経度を取得し続けます。
・音楽再生を一旦停止し、イヤホンのマイクから音声認識します。
・音楽再生を一旦停止し、TextToSpeech音声を流します。
・サーバとHTTP POST通信します。(

元記事を表示

OTHERカテゴリの最新記事