- 1. Android StudioでEspressoを使ったUIテストのやり方
- 2. 【Android】PlayStore遷移時のActivityNotFoundException
- 3. 家にきた赤い服のその人は、本当にサンタですか? 〜tflite modelを作って判別しよう〜
- 4. Android AppLinksについて
- 5. だからボクはオブジェクト指向が使いこなせない Android/Kotlin編
- 6. DialogFragmentで5分刻みのタイムピッカー
- 7. Play Billing LibraryでAndroidの課金実装してみた
- 8. Androidアプリのログが正しく送信されていることを担保する
- 9. ヒーローズ・リーグ2021「カフェのサイズが覚えられない」
- 10. HyperionのデバッグメニューアイテムをJetpack Composeで作る
- 11. ABCD2021Winter参加レポート
- 12. 【Android】今日からできるSplashアイコンアニメーション【Splash】
- 13. 端末上の画面と音声とマイク入力を同時にキャプチャする
- 14. スマホでストレージの空き容量が無くなった時に、アプリデータがどうなるか試してみた
- 15. SAP モバイル開発についてまとめてみた
- 16. [React Native] MacでReactNativeプロジェクトの環境設定 (iOS&Android)
- 17. Androidプロジェクトを始めるとき・初期段階で考えること
- 18. 【Android】 Jetpack ComposeをServiceで使う / Jetpack Compose on Service
- 19. 【Android】公開タイミングの管理ボタンがない
- 20. React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる
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
Androidプロジェクトを始めるとき・初期段階で考えること
この記事は[DeNA Advent Calendar 2021](https://qiita.com/advent-calendar/2021/dena)の23日目の記事です。
Androidプロジェクトを始めるときや、最初の段階で、考えておいたことが良いことや設定しておいたほうが良いことなどに書いていきます。
## パッケージ名
アプリのパッケージ名は全アプリで一意である必要があり、公開後は変更できません。なので、十分に注意してつけましょう。
パッケージ名は[Javaの命名規則](https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html)に従うのが一般的で、適当につけないようにしましょう。
これはユーザーからも確認できるものなので、変な名前にしないようにしましょう。
## compileSdk, targetSdk, minSdk
いくつかSdkを指定する箇所が `build.gradle` にありますが、これらについての説明です。しっかりと理解しておきましょう。
また、これらの値はアプリ
【Android】 Jetpack ComposeをServiceで使う / Jetpack Compose on Service
Jetpack Composeを[Service](https://developer.android.com/guide/components/services?hl=ja)で使おうと思ったら、いくつかエラーが発生してうまく行かなかったので、メモがてらエラーの内容と対応を記載したいと思います。
# 対応前のコード
下記のコードがエラーが発生してしまう対応前のコードです。
エラーに対処しつつ、Jetpack Composeが使えるところまで行きたいと思います。“`kotlin:BeforeのMainService.kt
class MainService : Service() {private val params by lazy {
WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
if (Build.VE
【Android】公開タイミングの管理ボタンがない
# このボタンがなくて困った…
![Screenshot 2021-12-02 131720.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/a9ac52e6-3e89-e740-45f0-58b669c13b68.jpeg)PlayStoreにアプリを”初めて”リリースしようとすると「管理対象の公開のステータス」ボタンが表示されません。
審査が通ったらいきなり公開されてしまうんでは・・?という不安な気持ちになります。
こんなときにどうするか、書いておきます。## 結論
クローズドテストで公開する
![Screenshot 2021-12-02 132019.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/a2527477-5ccd-2952-5648-9064e28a636d.jpeg)クローズドテストなら予めベータテスタとして登録した人だけに公開されるので安心です。
審査に出すタ
React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる
## はじめに
先日、下記の記事を発表しました。
https://qiita.com/yoshiyuki_kono/items/bffda8fba33839a3e9aa#couchbase-lite
そこで、Couchbase Liteについて、下記のように書きました。
>…チュートリアルが公開されています。提供されているReact NativeのUI実装(スタータープロジェクト)に対して、Couchbase Liteを利用するためのコードを追加していく形になっています。2018年時点のものにて、提供されているReact Nativeのソースコードは、すでに時代遅れなものとなっていますが、提供されているUI実装は無視しても(React Nativeを昔から使っている人は、提供物をベースに最新化してもよいかもしれませんが )、チュートリアルの内容を参考にして実装を行うことができるでしょう(将来別の記事で発表したいと思っています)。
本稿では、「Couchbase Liteを利用するためのコードを追加していく」部分について、見ていきたいと思います。
ここでは、提供されている