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

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

アンドロイドで画面に書いた数字を判別する画像認識アプリを作る(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`をオーバーラ

元記事を表示

[Unity][Fee]各プラットフォームでファイル選択ダイアログを表示する

# はじめに
自作ライブラリ開発日記です。
https://github.com/bluebackblue/fee_core

unitypackage
https://github.com/bluebackblue/fee_core/releases

# なにが問題なのか
ファイル選択ダイアログはプラットフォームによって対応方法が違う。
キャンセルが取れないプラットフォームがある。
Androidは「AndroidManifest.xml」を設置する必要がある。

# コード
“`cs
/** 開く。
*/
public void Open()
{
Fee.Platform.Platform.GetInstance().OpenFileDialog();
}

/** Main
*/
public void Main()
{
string t_full_path = Fee.Platform.Platform.GetInstance().GetOpenFileDialogResult();
if(t_full_path != null){
UnityEngine.Deb

元記事を表示

Android StudioでJavaのversionで躓いたのでまとめる

# はじめに

ここ数ヶ月、実務インターンをするようになってから、インターン先が変わるたびに環境構築をしているのですが、適当にやっているせいでJDKのバージョンが原因なエラーに幾度となく躓いてきました。

毎回調べて、

ああ…JDKのversionが原因か。で、どうするんだっけ。と調べるのが不毛なため備忘録として記事にしました。

この記事は自分のユースケースにおける対処法なため、他の方には当てはまらないかもしれませんが、随時updateしていければと思います。

# 躓いた具体的なユースケース

まず、

“`Powershell
% java -vesion
“`

とターミナルで打つと、ご自身のJDKのバージョンがいくつか確認できるのでご参考までに。

## How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

この時の自分のJDKは

“`Powershell
java 12.0.2 2019-07-16
“`

でした。

> Java 9で「モジュール」の機能が

元記事を表示

Wifi経由でadbコマンドを実行しよう(2.Linux編)

#はじめに
ずっとWindowsからAndroidアプリのテストをしていたので意識していませんでしたが、
Linuxからでもadbコマンドを実行することができるようです。
#使用ツール
– Linux環境
– teraterm
– Linux用のAndroid SDK
– WinSCP

#手順
1. Android端末の開発者モードをONにしてUSBデバッグを可能にする。
2. PC、Android端末ともにWifiに接続。
3. Linux環境にAndroid SDKをインストール。
4. sdkmanagerコマンドでパッケージをインストール。
5. adb接続。
6. adbコマンドを実行。
7. adbを切断。

ほとんど、[Wifi経由でadbコマンドを実行しよう(1.Windows編)](https://qiita.com/erik_t/items/47fcb7e2ec092bfb6761)と
やることは変わりませんが、
[3. Linux環境にAndroid SDKをインストール。](https://qiita.com/erik_t/items/8cb59d624b66

元記事を表示

[備忘録][Android Studio]fontFamilyで独自フォントを選択できるようにする

# 1.resフォルダ配下にfontフォルダを作成する
resフォルダを右クリック→New→Directory
New Directory入力欄で「font」を入力してOKボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/9b63b0c4-0128-a082-3503-6bd2f2167568.png)

# 2.fontフォルダ配下に独自フォントを配置する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/5bad0346-99d6-908c-8de7-954c9cba0244.png)

# 3.fontFamilyで配置した独自フォントが選択できるようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/c5bfd667-29e0-5

元記事を表示

[備忘録]Kotlinでシングルトンクラスの作成方法

# シングルトンなクラスの作成方法

## 書き方その1

マルチスレッドに対応しています。

“` kotlin
// シングルトンクラス
class StatefulContext {

companion object {
// シングルトンインスタンスの宣言
private var instance: StatefulContext? = null

// インスタンス取得
fun getInstance() = instance ?: synchronized(this) {
instance ?: StatefulContext().also { instance = it }
}
}
}
“`

## 書き方その2

1番目と同じです

“` kotlin
// シングルトンクラス
internal object StatefulContext {

// シングルトンインスタンスの宣言
var instance: Stat

元記事を表示

[kotlin] RecyclerViewの実装、クリックイベント付き

#今回やること
今更だけど kotlin でRecyclerViewを実装する。(自分用の備忘録としてほしかった)
クリックイベント処理の記事が少なかったのでタップしたらトーストを表示するのものを作ってみる。
これ↓!

#RecyclerViewの配置
android studio のパレットペインを使って Containersの中にある RecyclerViewをレイアウトに追加する。ドラッグしたらプロジェクトにRecyclerViewが追加され依存関係とかも最新のものが自動的に追加される。

一応、依存関係

“`gradle:build.gradle
dependencies {
implementation ‘androidx.recyclerview:recyclerview:1.1.0’
}
“`
*

元記事を表示

OTHERカテゴリの最新記事