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

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

Play Console デバイス一括除外スクリプト

Androidアプリ開発において、公開対象のデバイスを制限したい場合があります。
今までは[このページ](https://qiita.com/kookaa/items/1c4e2d674b67fb911250)のスクリプトで一括で行えていたのですが、最近アクセスすると方法が変わっていたのでスクリプトを記載します。(2020/01/27)

スクリーンショット 2020-01-27 11.14.24.png

スクリーンショット 2020-01-27 11.14.30.png関数型プログラミングのFunctorって何が嬉しいの?

関数型プログラミング言語を勉強していると、Monadだけでなく、FunctorとかApplicativeなど、オブジェクト指向に慣れ親しんだプログラマには聞きなれない言葉が出てきます。

今回は自分の勉強も兼ねて、Functorの使い所の代表的なパターンを見てみます。

※筆者は圏論の専門家ではないので、あくまでアプリケーションを作るプログラマ視点で、Functorの概要を整理しています。

## Functorのおさらい
Functorのおさらいをするにあたり、Haskellを説明に使用します。
HaskellでのFunctorのソースコードを抜粋します。
以下、[https://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#Functor](https://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#Functor)より抜粋。

>
“`haskell
class Functor f where
fmap

元記事を表示

モバイル初心者がQiitaのスマホアプリを爆速で個人開発した話【React Native】

# はじめに
## 何についての記事?
React Nativeを使って3週間弱でQiitaの非公式スマホアプリを個人開発・公開したのでその時の所感を書き連ねようと思います.
個人開発する上での反省点や、使用したフレームワークである[React Native](https://facebook.github.io/react-native/)のこと等を書くつもりです.
なお、現状`Android`版しか開発していないので以下はすべて`Android`の話になります.

## 作ったもの
「Qiita API v2」を用いてアプリ上で閲覧や記事のストック、タグのフォロー等、一通りの操作ができるものを作りました.
「Qiita in Mobile App」ということで、アプリ名は「QiiMa!」です.

![eyecatch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475291/1ec12daf-5a6f-a776-c4a0-41c147de7e89.png)

[Google Play Store

元記事を表示

Androidの非同期処理の方法と実装について

# 非同期処理関連の勉強と実装

ひとまずではありますが、非同期処理について
2020/01/26現在の学習結果をまとめましたのでここに書かせていただきます。

# 目次

1. 非同期処理の種類について
1. Thread での処理について
1. AsyncTask での処理について
1. AsyncTaskLoader について

# Thread での処理
実装のながれは、下記のような概要ですね。
1. handlerオブジェクトを宣言する。
2. Threadでのメソッド宣言を書く。(無名クラスを作成)
3. handlerオブジェクトのpostメソッドクラスのメソッド宣言を作成(無名クラスを作成)
4. postメソッド内のクラスで処理したいことを記載(主に通信・UI変更など)

# AsyncTask での処理
こちらも実装は下記の流れのようにできるようです。(ただし、今回の実装時は、パターン2で行きました)

1. パターン1
1. AsyncTask を親クラスとする非同期処理のクラスを作成する。
2. doInBackGroundの処理を作

元記事を表示

sealed classでのParcelizeの使い方と動く仕組み

以下のようにすることで実装してくことができます。
ポイントはsealed class自体にはParcelizeをつけないで、サブクラスで実装させることです。

“`kotlin
sealed class Sealed(open val sealedClassProperty: String) : Parcelable {
@Parcelize
data class SubDataClass(val subClassProperty: String, override val sealedClassProperty: String) : Sealed(sealedClassProperty)

@Parcelize
class SubClass(val subClassProperty: String, override val sealedClassProperty: String) : Sealed(sealedClassProperty)

@Parcelize
object

元記事を表示

Androidアプリの新規プロジェクトで作られるアイコンをシンプルにしたい

Android Studioで新規プロジェクトを作成すると、以下のようなアプリアイコンが作られます。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/1a0860c4-6956-7958-3963-4fa49130153e.png)
ファイル構成は以下のようになっていると思います。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/568c8dae-58f2-08b4-8cf5-650db4d269c2.png)
VectorDrawableに対応していないOSでも問題なく表示され、Round Iconも用意されていて、API 26以上ではAdaptive Iconになる、Adaptive Iconのforeground/backgroundがVectorDrawableになっていて、それぞれ一定の複雑さを持っている。
Androidアプリのアイコンはどうやって作ればよいのかというサンプルになっていて、

元記事を表示

アンドロイドで画面に書いた数字を判別する画像認識アプリを作る(PyTorch Mobile)[アンドロイド実装編]

#今回作成するアプリ
画面に書いた数字を認識する画像認識アプリをPytorch Mobileとkotlinで作る。
**モデル作成編(Python)**と**アンドロイド実装編(kotlin)**の全2回に分けます。

今回のandroid studio のプロジェクト Github : https://github.com/SY-BETA/NumberRecognitionApp/tree/master

まだpythonでモデルを作ってない方は[アンドロイドで画面に書いた数字を判別する画像認識アプリを作る(PyTorch Mobile)[ネットワーク作成編]](https://qiita.com/YS-BETA/items/077b5b8d3163fb7de800)で作ってください。

もしくはpythonの環境がないアンドロイドエンジニアの方やモデル作るのがめんどいという方は学習済みモデルを挙げているので、
Github: https://github.com/SY-BETA/CNN_PyTorch/blob/master/CNNModel.pt から学習済みモデルをダウンロード

元記事を表示

アンドロイドで画面に数字を書いて画像認識するアプリを作る(PyTorch Mobile)[CNNネットワーク作成編]

#今回作成するアプリ
画面に書いた数字を認識する画像認識アプリをPytorch Mobileとkotlinで作る。
**CNNネットワーク作成編(Python)**と**アンドロイド実装編(kotlin)**の全2回に分けます。

Python環境がないアンドロイドエンジニアの方やモデル作成がめんどいって方は[アンドロイドで画面に書いた数字を判別する画像認識アプリを作る(PyTorch Mobile)[アンドロイド実装編]](https://qiita.com/YS-BETA/items/15a4a2c64360f91f8b3a)へ行って実装編で学習済みモデルをダウンロードして進めてください。

Githubに今回のpythonコード挙げてます
Github: https://github.com/SY-BETA/CNN_PyTorch

これ↓

元記事を表示

AppiumでFlutterアプリのテストを自動化する 実践編(JavaScript)

# はじめに

[AppiumでFlutterアプリのテストを自動化する 環境構築編 – Qiita](https://qiita.com/hiesiea/items/b4e31b6f1f585a93bae1)
の続きになります。
実際にテストコードを書いて、それを実行し、レポートを出力するところまでやります。
今回は「JavaScript」を使います。

# 前提条件

[AppiumでFlutterアプリのテストを自動化する 環境構築編 – Qiita](https://qiita.com/hiesiea/items/b4e31b6f1f585a93bae1)
で、Appiumの環境構築が完了していること

# なぜAppiumで自動化するのか

Flutterには、「Integration Test」という仕組みが存在します。

– [An introduction to integration testing – Flutter](https://flutter.dev/docs/cookbook/testing/integration/introduction)

これは結合

元記事を表示

iOS, Androidアプリの強制アップデート(サーバーレス)

# はじめに
[文字列→塩基配列の相互変換ツールをつくってみた(アプリ版)](https://qiita.com/am10/items/3ecac20451c82133e900)でつくったアプリ

* [Mac](https://apps.apple.com/jp/app/dna%E5%A4%89%E6%8F%9B/id1494127578?mt=12)
* [iOS](https://apps.apple.com/jp/app/id1493994947)
* [Android](https://play.google.com/store/apps/details?id=am10.dnaconverter)

これに強制アップデート機能(半強制で抜け道あり)をつけてみました。

特に必要なわけではないですがこの記事([[iOS]アプリに強制アップデート機能を導入すべき理由と、簡単に実装する方法](https://qiita.com/kazu0620/items/f2f6c711c8800d127eb2))をみてやりたいと思い実装してみました。

が!!サーバーを用意するのはめんどくさい

元記事を表示

【Android】はじめてのCoroutines

アプリ開発歴( =プログラミング歴)がもうすぐで1年になります
@iTakahiroです。

現在はiOS・Androidの二刀流を目指して日々奮闘中です!
Qiitaでは、Androidの基本的なアーキテクチャであるMVVMに関する記事をシリーズ化して投稿し、1つのごくごく簡単なアプリを更新していくことでアウトプットしています。

**これまでの記事** :

– [【Android】分かった気になれる!アーキテクチャ・MVVM概説](https://qiita.com/iTakahiro/items/6b1b22efa69e55cea3fa)
– [【Android】はじめてのDataBinding](https://qiita.com/iTakahiro/items/b5fe2b186750c6e774e5)
– [【Android】はじめてのRoom](https://qiita.com/iTakahiro/items/7e0d63140ae4dac10d18)

**ソースコード**

– [ArchitectureFootball](https://github.com/

元記事を表示

ReamBrowserでAndroid実機のDBを参照する方法(Android:実機端末,PC:Mac)

## AndroidをUSBデバッグ接続する
ここは省きます。
ググればすぐでできます!
https://developer.android.com/studio/command-line/adb?hl=ja

## Android SDKのディレクトリを開く

**Android SDK Location** に記述してあるパスをターミナルで開く
Andorid Studio → Preferences → Android SDK → **Android SDK Location**

~~~Bash
cd /Users/ユーザー名/Library/Android/sdk
~~~

adbが存在するパスへ移動

~~~Bash
cd ./platform-tools
~~~

##Android実機の実行環境を開く

adbを実行し、android実機の実行環境を開く

~~~Bash
./adb shell
~~~

## realmファイルを抽出

ローカルストレージを見る

~~~Bash
run-as パッケージ名

//上のパッケージわからない場合は以下で調べる
pm l

元記事を表示

再起動したあと自動的にadb tcpipを有効化する (root化必要)

# モチベ
[scrcpy](https://github.com/Genymobile/scrcpy/)するときにいちいちUSBつないでtcpipするのめんどくさい

# 環境
Nexus 5 無印 (タッチスクリーンが壊れてる)
Android 6.0.1 Mashmallow

# 手順
1. adb shell
2. su
1. setprop persist.adb.tcp.port 5555
2. 端末再起動して adb shell getprop で persist.adb.tcp.port があればOK

# ソース
https://stackoverflow.com/questions/12251101/how-to-enable-adbd-to-listen-to-a-port-at-boot-time-in-android
> This will make it persistent:
>
> “`setprop persist.adb.tcp.port 5555“`

https://android.googlesource.com/platform/s

元記事を表示

自作アプリで、Intentを使用してGmailアプリに、CC, BCC, 件名, 本文が渡せない。

#問題
私の自作アプリでは、Intentという内部処理を使用して、Gmailアプリに、CC, BCC, 件名, 本文を渡しています。ある日突然、Gmailアプリが、CC, BCC, 件名, 本文を受け付けてくれなくなりました。

#問題発生時のコード(Kotlin)
“`
// メールアドレス設定
val uri = Uri.parse(“mailto:” + mailAddressTO)

// 件名、本文をメールツールに渡す
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra(Intent.EXTRA_CC, mailAddressCC)
intent.putExtra(Intent.EXTRA_BCC, mailAddressBCC)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, mailText)
startActivity(context, intent, null)
“`
#解決策

元記事を表示

初心者の初心者による初心者のためのAndroidアプリ開発

# はじめに

こんにちは。
現在、高専の4年生をしており、最近Androidアプリ開発について勉強しています。きっかけとしては単純なもので、自身の研究内容にAndroidアプリの開発の知識が必要だったというだけです。プログラミング自体に興味を持ってからの日々が浅いので、正直見るもの見るもの新鮮です。

この記事を見られているということは、タイトルにも書かれているようにAndroidアプリ開発の初心者、もしくは、これから学んでいくという方がほとんどだと思います。そのため、『これからAndroidアプリ開発について学んでいきたいと思ったけどプログラミング全然知らないけど大丈夫かな?』って方をメインに、つまずきやすいと感じた部分を初心者なりに精一杯わかりやすく解説して学んでいけたらと思っています。

#イベントとイベントハンドラ、リスナ

今回はイベントとイベントハンドラとリスナについて解説していきます。正直、イベントとリスナはまだしも、イベントハンドラなんていう単語聞いたことないと思います。もちろん私も聞いたことなかったです。意味自体は非常に簡単で一度聞いてしまえば難しく考える必要なもの

元記事を表示

Android 10で、端末からIMEIなどのSIM情報を取得する方法

# はじめに

Android 10から、端末からIMEIなどのSIM情報を取得するためには、「READ_PRIVILEGED_PHONE_STATE」という権限をAndroidManifest.xmlに追加する必要が出てきました。

>Android 10 以降で IMEI とシリアル番号の両方を含む再設定不可能なデバイス ID にアクセスするには、アプリに READ_PRIVILEGED_PHONE_STATE 特権が必要です。
注意: Google Play ストアからインストールされたサードパーティ製アプリでは特権を宣言できません。
[Privacy changes in Android 10  |  Android デベロッパー  |  Android Developers](https://developer.android.com/about/versions/10/privacy/changes?hl=ja#non-resettable-device-ids)より引用

追加するにあたって、以下のように“`tools:ignore=”ProtectedPermissi

元記事を表示

Androidで特定部分だけ角丸にする

`shape`の`corner`に`topLeftRadius`みたいなパラメータがあるので、角丸にしたい部分だけ指定してあげれば角丸になる。以下は上だけ角丸にした場合。

“`xml





“`

全体角丸は`radius`で指定したほうがわかりやすい

“`xml

[Android] コールバック

##作るもの
以下をコールバックを使って実装する。
・ボタンを押すと非同期処理を実行する
・非同期処理が終わったら画面に「終了」を表示する
![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/6a9eae7a-1976-cae3-0d91-8742d2635edd.png)

##用意するクラス
・AsyncTaskCallback.java  コールバックインターフェース
・MainActivity.java     コールバックインターフェースを実装する
・HttpAsync.java      非同期処理クラス

##使い方
AsyncTaskCallback.java

~~~java
public interface AsyncTaskCallbacks {
public void onTaskFinished(); //終了
public void onTaskCancelled(); //キャンセル
}
~~~

Main

元記事を表示

libGDXでandroidアプリのチューニングをした話

##はじめに
もう9年前。iOSアプリが日本ランキングの1位になった。
[iOSソリティアV](http://itunes.apple.com/jp/app/soritiav/id341532096?mt=8)
さりげなく自慢:relaxed:

調子に乗ってandroidアプリも作った。nativeで作った。
nativeで当時android2.xなので、SurfaceViewを使った。
[androidソリティアV](https://play.google.com/store/apps/details?id=jp.co.projapan.solitaire)

アニメがいまいちだったけど:sob:、ちゃんとできた。
フレームレートがちょっと低かった。

android/iOS共に現在10周年記念中。

数年前、チューニングしたいな、と思った。
iOSとソース一本化
したいけど、一本化するにはやることが多すぎる・・・。

うーん、GLSerfaceViewとかか。めんどくさそうだぞ。しかもよくなるか保証がない。

そんなとき、こんな記事が
[Android StudioでlibGDX

元記事を表示

Androidアプリでソフトウェアキーボードの入力を1文字ずつ検出する

# 概要
Androidで1文字ずつ文字の検出をしようと思ってonKey~をつかってもできませんでした.
ちょっと調べたところ,ソフトウェアキーボードのキーボードイベントを拾ってくれないらしいです.
https://developer.android.com/training/keyboard-input/commands

ので,1文字ずつ文字の検出する機能を実装しました.

EditTextの場合,TextChangedListenerを使えば一応できますが,入力ではなくてEditTextのテキストが変わったら反応するため処理がめんどくさいので使いません.

## ソースコード
https://github.com/yokoro13/Get-Software-KeyBoard-Input

# 実装
今回はEditTextの場合で実装していきます.
この実装方法だと(たぶん)ほかのViewでもつかえます.WebViewでは使えました.

やることは簡単で,もとになるViewを継承して`onCreateInputConnection`と`dispatchKeyEvent`をオーバーラ

元記事を表示

OTHERカテゴリの最新記事