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

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

Androidアプリのダウンロード数をBigQueryで連携・取得する方法

# はじめに
これまで、Androidアプリのインストール数を確認するときは、Google Play Consoleを開き、
アプリを選択しダウンロード数を**手動**でスプレッドシートに転記させていた。

これはエンジニアとして許せないと思い、この面倒な作業をなくすために、

Google Play から取得できるアプリのインストール数をGBigQueryに毎日自動転送するよう設定した。

今日はそのAndroidアプリ(GooglePlay)をBigQueryに連携させた設定手順をアウトプット。

# GooglePlayからBigQueryへの転送手順

公式ドキュメントはこちら

[Google Play 転送 | BigQuery Data Transfer Service | Google Cloud](https://cloud.google.com/bigquery-transfer/docs/play-transfer?hl=ja#before_you_begin)

### 1/ 転送手順を始める前に

1. [BigQuery Data Transfer Ser

元記事を表示

Flutterでのバックグラウンド処理のスケジューリング実装が難しいというお話

## 初めに
iPhone純正アラームのような規定時刻&曜日に通知を送って音を鳴らす目覚ましアラームアプリを、Flutterにて個人開発しています。
しかし、作り始めてみたところ思った以上に実装難易度が高く、調べた中で得た知見を共有します。バックグラウンドって何度も書くのアレなので以降**BG**とします。

また、いやいやこれでいけるんじゃないですか?みたいなコメントは大歓迎です。

## TL;DR (忙しい人用)
– 現状アプリkill状態でのBG処理のスケジューリング実装は**MethodChannel**を用いてOS毎にコードを書く必要がありそう…?(調査中)
– 調査段階の中途半端な状態で投稿すいません。
– アラームアプリ等、BG処理のスケジューリングは**茨の道**。
– 規定時刻&曜日のローカル通知は[flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications)の[zonedSchedule](https://pub.dev/packages/flut

元記事を表示

ARでクリスマス気分を味わってみた!

こんばんは!ZOZOTOWNでAndroidエンジニアをやっているマサと申します。

この投稿はZOZO Android Adventカレンダーのその2の25日目(最終回)の記事となります。

この記事ではAndroidのアプリ上でAR(拡張現実)を使用してクリスマスツリーを設置する方法を共有したと思います。

キッカケは、僕が普段からARに関連するアプリを(Pokemon Go,マップアプリ)使用する機会があり、ふとAndroidでARアプリを作成する方法が気になったからです。また、ちょうど投稿日がクリスマスということもあり、今回はARでクリスマスツリーを設置してみようと思います!

## はじめに
この記事は主に以下のような読者を対象として想定して書いてみました。他にも様々な実装手段やツールがあると思いますので、あくまで参考程度にしていただければと思います。

この記事にはどういう特徴があるの?
– OpenGLについてあまり詳しくないけどARをAndoridで書いてみたいまたは実装方法を知りたい
– Andoridを普段JavaまたはKotlinを使用してAndroidStud

元記事を表示

Navigation Componentのdeep linkの仕組みを調べて見た

Navigation Componentでは起動した時点でFragmentのバックスタックが作られるDeep Linkという機能があります。
リファクタリング中の既存の動作を維持しつつnavigationを適用していたときに、応用の仕方が分からず、どうやって実装されているのか、調べて見ることにしました。

# Deep Linkの起動方法

Deep Linkには暗黙的deep link (implicit deep link) と明示的deep link (explicit deep link) の2種類があります。まずはそれぞれの起動方法がどうなっているのか調べて見ましょう。

## 暗黙的deep link

暗黙的deep linkではdeep linkにuriを設定して、そのuriで起動された時にdeep linkが発動するようになります。呼び出しの仕組みはuri指定のIntentなので、呼び出し側はなにも複雑なことはしていません。

設定の仕方は、navigation graphにdeeplinkタグを設定

“`xml:nav_graph.xml

元記事を表示

Android StudioでEspressoを使ったUIテストのやり方

#はじめに
**Espresso**はAndroid StudioのUIテスト(画面のテスト)が出来ます。その使い方を紹介します。
#今回は・・・
以下のようなアプリケーションがあるとします。

“`java:MainActivity.java
package com.websarva.wings.android.uitest1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private TextView textView;
private EditText editText;
private String text;

@Override
pro

元記事を表示

【Android】PlayStore遷移時のActivityNotFoundException

クラッシュリティクスにこんな報告が上がってきました。

“`
Fatal Exception: android.content.ActivityNotFoundException
No Activity found to handle Intent { act=android.intent.action.VIEW dat=https://play.google.com/… pkg=com.android.vending }
“`

PlayStoreへのIntentが失敗している?
中華スマホとか、Kindleならわかるが対象端末は普通にキャリアで売られているものばかり。。

## 問題はこれかも

![Screenshot 2021-12-02 135349.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/3fadf9c1-f1f0-0d2f-6c91-f7375e3ceeaa.jpeg)

Disabledにして、強制アップデートダイアログを叩いてストア遷移しようとすると落ちまし

元記事を表示

家にきた赤い服のその人は、本当にサンタですか? 〜tflite modelを作って判別しよう〜

## メリークリスマス

アドベントカレンダーのネタを探してたら、kaggleで [IS THAT SANTA?](https://www.kaggle.com/deepcontractor/is-that-santa-image-classification) というデータセットを見つけてしまったので、on-device向けのサンタ識別モデルを作成することにしました。

## 準備

自分でモデルを組んでも良かったんですが、ここはお手軽に[TensorFlow Lite Model Maker](https://www.tensorflow.org/lite/guide/model_maker)を使うことにしました。

TensorFlow Lite Model Makerは転移学習を用いてtensorflow liteのモデルを作成できるライブラリで、少ないデータ量で精度が高いモデルを作成することができます。

また、モデル作成の実行環境は、[Colaboratory](https://colab.research.google.com/notebooks/welcome.ipyn

元記事を表示

Android AppLinksについて

この記事は [ZOZO Advent Calendar 2021](https://qiita.com/advent-calendar/2021/zozo) カレンダー2の25日目です。

## AppLinksとは
あるURLをIntent FilterとしてアプリのManifestファイルに定義することで、定義したURLからアプリを起動することが出来るようになりますが、httpやhttpsといったschemeの場合は反応するアプリも多いですし、毎回目的のアプリを選択するのは面倒です。

AppLinksに対応することで、特定のURLに直接アプリを関連付けることが出来、前述のような煩わしさが全くなくシームレスにアプリを起動することが出来るようになります。

公式ドキュメントでは、さらに詳しく解説されています。

https://developer.android.com/training/app-links?hl=ja#app-links-vs-deep-links

正直、新しいトピックではありませんが、Android 12で加えられた変更点も交えて書いていきたいと思います。

#

元記事を表示

だからボクはオブジェクト指向が使いこなせない Android/Kotlin編

#はじめに
本記事は、Android/Kotlin開発において、オブジェクト指向を使いこなしたい、という方に向けた記事です。
※この記事は「[だからボクはオブジェクト指向が使いこなせない Android/Java編](https://qiita.com/argama147/items/dbd6210d4b0f570ad295)」をAndroid/Kotlinで書き直したものです。

私が10年近くAndroidアプリ開発に関わってきて思うのが、開発現場でオブジェクト指向らしいコードを書けるプログラマーは、残念ながら全体の2割にも満たない、ということです。(あくまで私個人の感想です)。
逆に言えば、オブジェクト指向らしいコードを書けるようになるだけで、開発現場で重宝される人材になれます。Androidの最新ライブラリの使い方の勉強をすることも大切ですが、開発現場でより即効性があり、かつ、Android以外のプログラミングにも応用できる、潰しのきく技術、それがオブジェクト指向らしいコードを書く技術です。

##どうしたらオブジェクト指向らしいコードを書く技術を身につけられる?
※具体的な

元記事を表示

DialogFragmentで5分刻みのタイムピッカー

## はじめに

記事にするのを1年間忘れてたので、備忘録といっても今更役に立つやら。

一般的な手法なのかわかりませんが、
「5分刻み TimePicker」とかで検索すると、
Android標準のタイムピッカーを改造する例がちょいちょい見つかります。

しかしこのタイムピッカーが、
API30以上がターゲットの場合にクラッシュするようになりました。

https://developer.android.com/about/versions/11/non-sdk-11
APIへのアクセスが禁止されたものの中に、TimePickerがあります。
今は新しいTimePickerが提供されているので、そっちを使ってねってことみたいです。

でもダイアル式のタイムピッカーが使いたいので、
クラッシュ原因以外の部分だけ切り取って、それっぽいものに復元しました。

画面表示する都合で、
最終的に取得できる時間と分を数値にしています。

## タイムピッカー

“`Java:TimePickerDialogFragment.java
package com.example.myapplicati

元記事を表示

Play Billing LibraryでAndroidの課金実装してみた

# はじめに
こんにちは。
昨年に引き続きLivesense Advent Calendarで記事を書かせていただくことになりました。
今回は「Play Billing Library」を使ったAndroidの定期購入課金実装の話をしようと思います。

# Play Billing Library
2017年ごろにリリースされた、アプリ内課金を実現するためのライブラリです。
課金サービスとの接続の管理や通信処理、課金を行うためのモーダル表示をすることができます。

このライブラリは2年ごろにバージョンアップが行われ、その度に古いバージョンの足切りがあり課金ができなくなるため、バージョン管理には気をつけましょう。

https://developer.android.com/google/play/billing/integrate?hl=ja

# 課金処理の流れ
1. アプリで課金サービスへの接続を行う
1. 接続完了後、ユーザー操作による購入のタイミングで課金モーダルを表示する
1. モーダル内の「定期購入」をタップする
1. Google Play側へ支払いが行われ、レシート情報

元記事を表示

Androidアプリのログが正しく送信されていることを担保する

こんにちは。NewsPicks Androidアプリエンジニアの sefwgweo です。
今回は[こちらの記事](https://tech.uzabase.com/entry/2021/05/21/094101)で書かれているログまわりについて、掲題の通りAndroidの事例として紹介します。

なお、概要等についてはリンクの記事に全て詳細に書いてあるのである程度割愛し、本記事ではAndroidで工夫した部分に焦点を当てていきます。

## ログE2Eテストの大まかな仕組み

AndroidでUIテストということでJUNIT4系とEspresso3系を用いて実装しました。

テストコードにはテスト対象のログが送信されるときの画面操作を実装しています。例えば、ニュースフィードで記事を表示する、記事をタップする、といった操作です。

ログ送信のエンドポイントはスタブ化していて、テスト時のログが本番環境に送信されないようにしています。さらに、ログリクエストの内容をあとで検証できるように、スタブ化する過程でリクエスト内容をファイルに一時保存しています。

## ログE2Eテストの実装の詳細

元記事を表示

ヒーローズ・リーグ2021「カフェのサイズが覚えられない」

# はじめに
ヒーローズ・リーグ2021へ「[カフェのサイズが覚えられない](https://protopedia.net/prototype/2722)」を応募しました。

– ダイヤモンドさんの「スタバ」ネタが好き。
– チェーン店のカフェのサイズはお店毎に呼び方がちがって覚えにくい。
– 体でサイズを説明しながら楽しくチェーン店のカフェサイズを覚えたい。

![コンテスト応募_タイトル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543183/640f24c0-baaa-730c-d082-d912a5c55d0c.png)

私がダイヤモンドさんのネタをやりたかっただけとも言えます。

# 応募した作品
元ネタを見てからアプリのデモ動画見ると、よりアプリを楽しめます。
[カフェのサイズが覚えられない](https://protopedia.net/prototype/2722)

元ネタはこちら
漫才『スタバ』/コーヒーのサイズ おもしろ荘優勝ネタ/ダイヤモンド(ダイヤモンドお笑いチャンネル

元記事を表示

HyperionのデバッグメニューアイテムをJetpack Composeで作る

ComposeViewを使えばJetpack ComposeでViewがかけるのでHyperionのデバッグメニューのアイテムをJetpack Composeで書くことができる。
Android Viewだとデバッグ用にlayoutを用意する必要があったりして利便性が悪かったが、Jetpack Composeでかけるとコードだけなのでスッキリ書くことができた。
Columnで作ったけども、BoxでもRowでも別に問題はなさそうなきはするのでこれで好きなレイアウトのデバッグメニューが作り放題!

“` kotlin
@AutoService(Plugin::class)
class DebugMenuPlugin : Plugin() {
class PluginModuleImpl : PluginModule() {
override fun createPluginView(layoutInflater: LayoutInflater, parent: ViewGroup): View =
ComposeView(parent.co

元記事を表示

ABCD2021Winter参加レポート

# ご挨拶
こんにちは!もうすぐクリスマス?ですね!
dip株式会社でAndroidエンジニアをしながら、日本Androidの会にも所属している古川守加と申します!
日本Androidの会活動の一環でイベントの運営にも携わっております!
中でもABC、ABCDはAndroidの祭典として毎回大盛り上がりしています?
ぜひこの熱気を伝えるべく記事にしました!!お楽しみくださいっ

# 概要
2021年12月11日(土)に開催されたAndroid Bazaar and Conference Diverse 2021 Winterの参加レポートです!

![スクリーンショット 2021-12-23 17.09.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394720/1d995fe4-c776-9ee0-cd6a-8377e08c5f0d.png)

コロナ前は大学などをお借りして現地開催されていましたが、今年も前回のABC/ABCD同様オンラインでの開催となりました!
` ABCD2020Autum

元記事を表示

【Android】今日からできるSplashアイコンアニメーション【Splash】

この記事はand factory.inc Advent Calendar 2021 23日目の記事です。
昨日は[@doihei](https://qiita.com/doihei)さんの[GitHub Template Repository](https://qiita.com/doihei/items/223c273a1aef467fc3fd)使ってみたでした。

# はじめに

Android12が出てから、YoutubeやGoogle公式アプリ(MapやGmail)のSplashにアニメーションが追加されて、めちゃくちゃオシャレになったよね?
ユーザーの目に入るのはアプリを開く一瞬だけだけど、ちょっと動きが追加されるだけでワクワク感が出ててとっても素敵。

是非とも真似したいと思って色々調べてきたので、Splashアイコンのアニメーション実装方法を紹介するよ。

## 完成形

Before | After
:–: | :–:
端末上の画面と音声とマイク入力を同時にキャプチャする

[MediaProjection](https://developer.android.com/reference/android/media/projection/MediaProjection)を使用したサンプルとして、実況配信風動画が収録できるアプリを作成しました。

[crakaC/MediaProjectionSample](https://github.com/crakaC/MediaProjectionSample)
![ss1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11920/fb0f8322-91b3-caf5-12c8-609ececc62c5.png)

Startで開始、Stopで終了するシンプルな作りです。
端末上で再生されている映像の録画、音声の録音に加えてマイク入力も同時に録音して合成しています。

アプリを実装する上で必要になったことについて書いていきたいと思います。

## 全体像
![diagram.png](https://qiita-image-store

元記事を表示

スマホでストレージの空き容量が無くなった時に、アプリデータがどうなるか試してみた

##はじめに
面倒なのであまりやらないんですが、ストレージの空き容量が無くなった時にアプリが動いてて、どうなるのかなーって思いますよね。
まあOSが不安定になったり、動かなくなったりするので、アプリ側はあまり心配もしてないんですが、自前アプリで動作確認してみました。

スマホはフラッシュメモリーなので、長く使ってると、ライトエラーも起きますしねえ。
##結果
###android 11エミュレータで試しました。
– プリファレンスへ出力
– 消えたりしなかった。書き込もうとした分は書き込めてなかった。
– ファイルへ出力
– ファイル内容は丸っと消えた。途中まで書き込めたりもするだろうね、きっと。試してないけど。対策すればいいんだけど面倒だね。
– sqliteへ出力
– DBファイルは無事。書き込めないので例外が発生して、落ちた。

###iPhone XRで試しました。
androidと違い、空き容量200MBぐらいでダメになりました。設定のiPhoneストレージで確認したので、使用セクターの使ってない部分の合計が200MB近いとかなのかな

– NS

元記事を表示

SAP モバイル開発についてまとめてみた

# はじめに

この記事は [SAP Advent Calendar 2021](https://adventar.org/calendars/6252) の12月23日分の記事として執筆しています。

このブログでは SAP モバイル開発について書きたいと思います。
with コロナの新しいライフスタイルが定着しつつある今、モバイルアプリを使っていつでも、どこでも、リモートであらゆることができるようになりました。SAP では、今年に入ってからの企業間インタラクションのうち、最大 70% がモバイルで発生していると推定されているようです[^1]。今、モバイルがアツい:metal:
というわけで、モバイル開発をやってみたい、SAP にはどんな選択肢があるのか知りたい、という方の参考になれば幸いです。

# SAP Mobile Services

SAP Mobile Services は、モバイルアプリの開発や設定、管理をすることができるサービスです。一昔前までは、ただ一つのバックエンドと接続すればいい、非常に単純なアプリだったかもしれません。しかし最近のアプリは、様々なデータソースや

元記事を表示

[React Native] MacでReactNativeプロジェクトの環境設定 (iOS&Android)

# はじめに
アプリを開発するために必ずSwiftやKotlinを学ぶ必要はありません。Dart言語のFlutterフレームワークもあるし、JS基盤のReact Native(今から略でRNで書きます。)フレームワークでもiOSやAndroidのアプリ開発ができます。

それで、今回の記事はMacでRNプロジェクトの環境を構成する方法についてお話しします。

# Mac(OSX)でiOS開発の環境設定
Mac環境でXcodeを使用してiOSアプリをビルドする方法を説明します。

## パッケージ設置

### Homebrew 設置

“`
#設置しているか確認
$ brew –version
– zsh: command not found: brew
$ /usr/bin/ruby -e “$(curl -fsSL

# 設置コマンド実行
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

#設置完了確認
$ brew –vers

元記事を表示

OTHERカテゴリの最新記事