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

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

“Rust Android Gradle Plugin” を使ってみる

Twitter で Rust の Gradle プラグインがあるという話を聞いたので試してみました。

* [Rust Android Gradle Plugin](https://github.com/mozilla/rust-android-gradle)

Rust で Android 向けバイナリをビルドするという話はすでにいくつか記事があげられています (ありがとうございます) 。

* [RustでAndroidアプリを作る](https://qiita.com/nacika_ins/items/7aaad419fac128ac5b6d)
* [RustをクロスコンパイルしてAndroidで動かす – totechite’s blog](https://totechite.hatenablog.com/entry/2019/01/07/000000)

Gradle でやってみたものはなかったっぽいので備忘録的にまとめておこうと思います。

環境:

* Windows 10
* Android Studio 3.5.3
* Android SDK Tools 26

元記事を表示

Cosmo Commnicatorで開発したい

## やりたかったこと
電車で運良く座れたときに
Cosmo Communicatorでコーディング

## 試したこと
– termux
– CLIでは開発しづらい!とにかく辛い!
– cloud9
– VPS借りて、Cloud9を起動
エディタ上で文字を打つ文には快適だが、ファイルツリーをタップすると辛い現実が...

## 現実
![Screenshot_20200131-202048.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99240/92b87e5f-a137-dea8-bd21-1adece49ff5c.png)
**なんでこんなドアップになるの。。。**

## 思いついた対処方
– webviewアプリを自作してみる
– 時間がかかるしなんか沼にハマりそう

元記事を表示

Android(Java)でFirebase Cloud Functionsを使ってみる

Android初心者なのですが、
Firebase Cloud FunctionsのhttpsCallableを使ってHello Worldするまでをやってみたのでその手順をまとめます。

## 1. Androidプロジェクトを作成

Android SDK自体はインストール済みという前提で、まずはAndroid Studioを起動してプロジェクトを作成します。

`File` → `New` → `Create New Project`の順に選択

テンプレートは(お好みですが)`Empty Activity`を選び、`Name`、`Package name`、`Save location`を入力。
`Language`は`Java`を選択します。

## 2. Firebase SDKの準備

ブラウザでFirebaseプロジェクト(作成していない場合は作成してください)を開き、Androidアプリを追加します。
ここからはチュートリアル画面になりますので、概ねその通りに導入します。
1ページ目、まずは`パッケージ名`に先ほどAndroid Studioで設定したものを入力し、省

元記事を表示

[Android] SpotBugsは使えないかもしれない

AndroidStudioで静的解析ツールを使用したかったので、FindBugsを導入してみたが使えなかった。

解決法を探していたところ、前回の記事に書いたSpotBugsというのが出てきたので調べてみた。
https://qiita.com/QiitaD/items/8f1a81ac71a2eb9e59be

##結論
使えないっぽい。。。というかプラグイン検索で出てこなかった。そもそも他サイトには「SpotBugs(FindBugs)」と書いてあったので、同じものなのかもしれない。

しかしEcipseでは使えるっぽい。。。

##ほかのツール
Androidプロジェクトではほかにもよく使われる静的解析ツールがあるらしい。
・PMD
・CheckStyle
etc…

https://yuki312.blogspot.com/2016/02/android-gradle.html

##感想
ツールがいろいろあるみたいなので、次回は**PMD**の導入について調査し、記事にしたい。

元記事を表示

[Android] zxingでQRコード画像から読み取る

QRコードを含む画像からの読み取りを、zxing を使って行ってみました。
[ZXing Android Embedded](https://github.com/journeyapps/zxing-android-embedded)

“`Java
void readQrcode(Bitmap bitmap) {
// Bitmap のサイズを取得して、ピクセルデータを取得する
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);

try {
// zxing で扱える BinaryBitmap形式に変換する
LuminanceSource source = new RGBLuminanceSource(width, height, pi

元記事を表示

作ったアプリをGoogle Playストアに公開する方法(AndroidStudio編)

 あけましておめでとうございます!(激遅)
ようやく日記アプリが完成しました。そこで完成したアプリを公開する方法を備忘録も兼ねて紹介します。

 それと以前、[国民の祝日を表示する](https://qiita.com/ysk75/items/0d045cc744d372e984b1)のを紹介しましたが第〇月曜のところが間違っていたので修正版を後日載せておきます。

## Android Studio側でやること

 まずはアプリをアップロードするために専用のファイルを作成します。
1
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534506/702cf1fd-b914-6e29-766b-fff0f77844ce.png)
BuildのGenerate Signed Bundle / APK…をクリックします。

2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534506/63

元記事を表示

Androidアプリのテキスト入力に画像を挿入して更にタップしたい

# 概要
Androidアプリで、テキスト入力欄(`EditText`)のテキストの途中に画像を挿入したい。

このような感じ
![add_image_succeeded.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124752/7eef0271-b081-9572-a287-39a6f204302d.png)

また、挿入した画像をクリックしたときに何か(例えばビューアを開くなど)できるようにしたい。
実装方法を調査した。

# 調査・検証したこと
## テキスト間に画像を挿入する方法
`Spannable`を使って、テキスト間に画像を挿入することができる。

– [`Spanned`](https://developer.android.com/reference/kotlin/android/text/Spanned.html)
マークアップオブジェクトを持つテキストのインターフェース
すべての`text`のクラスに変更可能なマークアップやテキストがあるわけではない
– [`Spanna

元記事を表示

RxJava最初の最初

この記事はRxJavaの深い内容ではなく、初めて触れる際にそもそも、言葉がよくわからない、意味不明な人の最初のステップを対象としています。

自分が初めて勉強した時に、ひたすら調べてまとめた感じなのでこれを読んで雰囲気でも感じとってもらえれば幸いです。
#RxJavaとは
非同期なイベントベースのプログラムを合成するライブラリ

最初はなんじゃこりゃって感じなので流して最後に読んだら
少しあーってなります
・Observableからはitemが同期的or非同期に流れてくる(ストリームと言う)
・Observable.from(List)を使うと、Listの中身が1つずつ流れてくるObservableを作れる
・map()やfilter()などのOperatorを使うとストリームに流れてくるitemの加工ができる
・原則subscribe()observeで処理を開始し、コールバックに順次itemが流れてくる
・itemの到着を知らせるonNext()、ストリームの終了を伝えるonComplete()、エラーによる終了を伝えるonError()がある
observeOn()にSched

元記事を表示

NoxPlayerをPythonで動かすための基礎

##背景
UWSCの配布・サポートが終わったので、以前UWSCで書いたマクロをPythonで書き直した
そこで書き直した内容のうち、NoxPlayerをマクロで動かす上で重要な内容をまとめてみようと思った

内容として、Nox操作に必要なADBコマンドの送り方、プログラムとNoxで双方向的な操作、あいまい画像認識の方法など述べる
ソースコードを乗せるが、改変しながら書いたので間違ってるかも

##環境
NoxPlayer 6.6.0.0
Python 3.6
opencv-python 4.1.2.30

##ADBコマンドを送って操作する
NoxPlayerでAndroid操作を自動化するにあたって、一々マウス操作では煩わしい
そのためバックグラウンドで操作する必要があるが、そのためにはADBコマンドを使う必要がある
→Noxにはnox_adb.exeが標準で付属しているため、これを用いる

最初に、PythonでUWSCのDOSCMDに当たる関数は以下のように書ける

“`Python:コード
from subprocess import run, PIPE
def doscmd

元記事を表示

Android-ボタンをクリックされるたびに,表示されるテキストの値を変化させる

#目指す成果物

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/a35ea9f4-d915-ecce-3587-d0022d9ba31f.png)

#ステップ
###1. アクティビティファイルについて知る
アクティビティというのがUIを描画するクラスです.
アプリが起動すると,AndroidManifest.xmlファイルで指定されたアクティビティが最初に起動します.
Androidアプリにはメインメソッドが無い代わりに,MainActivityを指定しています.

また,アクテビティが開始されると,レイアウトファイル内のビューがビューオブジェクトに変換されます.
これによりレイアウトファイル内のビューがアクティビティ内で使用できるようになります.
(レイアウトインフレーションという仕組み)

###2. レイアウトファイルについて知る

すべてのアクティビティには,レイアウトファイルが紐付けられていて,ビューを定義し,画面のどこに配置するかを決めます.

レイアウトファイルを

元記事を表示

Android-Helloworldという文字列を表示させる

#目指す成果物
![helloworld.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/d118eb79-a606-6357-c530-db176e68784e.png)

#ステップ
###1. HelloWorldプロジェクトを作成する
まずAndroid Studioのこのメイン画面で,「Start a new Android Studio project」をクリックします.
![androidstudio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/e348710c-59b3-1b54-6fef-3e6212b4e0cf.png)

「Choose your project」が表示されるので,「Empty Activity」を選択し,「next」をクリックします.
Activityは一つのプロジェクトにつき一つ必要です.javaでいうとmain()的な位置付けです.
![3.png]

元記事を表示

Pythonで作るAndroid WebView アプリ (非kivy)

ずっとLinuxMint18.2(Ubuntu16.04LTS派生)を使っていてWebViewアプリの作成には失敗していたのですが、LinuxMint19.3(Ubuntu18.04LTS派生)に上げた途端に成功したのでメモ。[過去記事][prereq]と手順は似ているので差分のみを書いていきます。

# openjdkの混在を避ける

私がOSをclean installではなくupgradeしたせいなのかopenjdkは複数のversionが混在してしまいました。

“`bash
# 現在入っているopenjdkを調べる
dpkg -l | grep openjdk
“`

“`
ii openjdk-11-jre:amd64 11.0.6+10-1ubuntu1~18.04.1 amd64 OpenJDK Java runtime, using Hotspot JIT
ii openjdk-11-jre-headless:amd64 11.0.6+1

元記事を表示

Android Vulkan で ValidationLayers をインストール, 有効にするメモ

https://developer.android.com/ndk/guides/graphics/validation-layer

## 環境

* NDK r21(検証レイヤーがひとつにまとまって便利)
* Android9 or later(Android 10(Pixel4) で動作確認)

.so を apk に含めるか, Android9 以降では .so をアプリ固有ストレージに置いて, 実行時に validation layer(.so) をロードすることができます.

## gradle に指定して apk にパッケージングする設定

https://developer.android.com/ndk/guides/graphics/validation-layer#ilp

特段問題なくできるかと思います.

gradle で ndk のディレクトリは android.ndkDirectory で取得できます.

https://stackoverflow.com/questions/32751398/how-can-i-access-sdk-ndk-paths

元記事を表示

リリース済みのアプリをFlutterでフルスクラッチ&リプレイスしたときに苦労したこと〜Android編〜

Flutter製のアプリ自体は少しずつストアでも見られるようになってきていると思うけど、
既存のネイティブアプリからのリプレイスって話は見かけてないのでやったこと、苦労した点をまとめました。
Flutterそのもので苦労した話は気が向いたら別に書きます。

# パッケージ名を合わせる
当然だけどリプレイスなので既存アプリとパッケージ名を合わせる必要がある。

## 解決方法
[こちら](https://tutorialmore.com/questions-330218.htm)を参考にしたらすぐ出来た。
平たく言えば普通にAndroidアプリのパッケージ名を変更するのと同じことをするだけ。

# ビルドの署名を合わせる
これも合わせないとストアに登録出来ないのでやる。
ちなみに新規なら[公式ドキュメント](https://flutter.dev/docs/deployment/android#signing-the-app)の通りやれば良い。

## 解決方法
ぶっちゃけ新規の手順でキーストアの作成の代わりに既存のファイルを使うだけだけど一応記載しておく。

### 既存アプリのキース

元記事を表示

Gradle を Kotlin で書こう

今までなんとなくコピペとかコピペとかコピペで書いていた gradle 。
Groovy とか言う音ゲーのタイトルっぽいスクリプトで書かれています。

なんとその gradle が Kotlin で記述できるではありませんか!
これで少しは理解に身が入ると言うもの。さっそく試したいと思いました。

## Kotlin DSL ??

– Domain-Specific Language

特定の課題を解決するために特化された言語
SQL や HTML, Groovy なんかも DSL になるらしいですね。

Kotlin でスクリプトが書ける機能です。

## Migration

今回は元々あるプロジェクトへの導入方法になります。

### Environment

– Android Studio 3.5.3
– Gradle 6.0.1
– Kotlin 1.3.61
– JDK 8

### Rename and Rewrite

ほぼほぼ Android Studio の New Project で自動生成される gradle を書き換えます。

__1. `setti

元記事を表示

Flutter 正方形にカメラの映像を表示させるサンプル

## 実現したいこと
正方形にカメラの映像を表示させる

## 動作の様子
![IMG_5485 2.2020-01-30 15_06_52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6327/58219644-8928-e2b1-7de3-026c36bab81a.gif)

## 動作コード
こちらに一式用意しています。
https://github.com/quqjp/flutter-test

コード箇所はこちら。
https://github.com/quqjp/flutter-test/tree/master/lib/sample4

## 利用プラグイン
Camera Plugin
https://pub.dev/packages/camera

installing に従い導入する
https://pub.dev/packages/camera#-installing-tab-

## コード
FittedBoxで囲ってセンタリングすることで、映像の中心を保ちつつ正方形にマスク処理

元記事を表示

AndroidアプリでRealmマイグレーションするときの勘所

# 概要
[Realm](https://realm.io/)は、オープンソースのモバイル向けオブジェクトデータベース管理システムである。
弊社のモバイルアプリ[drill](https://drill.5thfloor.co.jp/)のAndroid版でも、設問の回答やアイデアメモ等のデータをデバイスに保存するために使っている。
Realmで保存しているデータのModelを書き換えるとマイグレーションが必要になる。実施した際に覚えておきたいと思ったところをまとめておく。

# 手順
## マイグレーション用のコードを記述する
マイグレーションするために、[`RealmMigration`](https://realm.io/docs/java/latest/api/io/realm/RealmMigration.html)を実装して、`migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long)`をオーバーライドする。

“`MyMigration.kt
class MyMigration : RealmMigra

元記事を表示

Android Studio – ImageViewをwrap_contentにしても画像サイズと合わない

# ImageViewに画像をセットすると、サイズが画像に合わない
こんなふうに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278251/1aa1049f-a525-3bd4-5c38-3a5b3e236f84.png)

layout_heightを`wrap_content`にしても変わらないのでハマった

# 解決法
Stack Overflowに書いてあった
[java – Image View not Wrapping Contents – Stack Overflow](https://stackoverflow.com/questions/21203189/image-view-not-wrapping-contents)

`adjustViewBounds`を`true`にすればOK。

“`xml:activity.xml
[Android]gradle taskのビルド時間を抽出するスクリプト書いてみた

# はじめに

現在、Androidインターンでビルド時間の改善に向けて日々奮闘中です。

マルチモジュールへの分割であったり、app moduleとは別なapplication moduleを作成してデバッグ速度をあげようとしている中のですが、

ビルド時間の計測を手動でしていたため、効率も悪く、ビルドがいつ終わったかを常に意識して待つ必要がありした。

そこで、shellscriptを書くことにより、人力ビルドから開放されようという試みです。

shell scriptを書くのは初めてなのでもっと良い書き方等あれば教えてくださいmm

# ざっくり流れ

1. 何回ビルドを行うかを入力
2. ビルドキャッシュを使うか否かを入力
3. output先のファイルを生成
4. 2の入力をもとにgradleのタスクを実行
5. 正規表現でビルド時間のみを抽出し、ファイルに書き込む
6. 4~5を1で入力した回数繰り返す

実際のコードはこちら

“`shell

#!/bin/bash
# ./build/build-time-2020-01-29-17-50-00.tx

元記事を表示

日付を適切にローカライズする[Kotlin]

ローカライズをしようと思った時に、ちょっと厄介なのが日付部分です。言語によって文字列も、記述順序も変わります。が、 `DateFormat` にある `getBestDateTimePattern` というメソッドを使えばそこらへんを自動でよろしくやってくれます。ということでこの記事では `getBestDateTimePattern` を紹介しようと思います。

# getBestDateTimePattern の特徴

* API Level 18 (Android 4.3)以上で使用可能
* 何の日付要素を表示するか(yyyyMMなど)を細かく設定できる
* 適切な日付要素の順番に並べてくれる

# サンプルコード

“`kotlin
private fun localizedDateString(epochSecond: Long): String {
val local = Locale.getDefault()
val format = DateFormat.getBestDateTimePattern(local, “EEEMMMd”)
val

元記事を表示

OTHERカテゴリの最新記事