Android関連のことを調べてみた2019年11月29日

Android関連のことを調べてみた2019年11月29日

[Android] 画像読み込みライブラリ Coil (Coroutine Image Loader) できることまとめ

# Coil の良いところ

[Coil](https://coil-kt.github.io/coil/) は Kotlin コルーチンを利用した Android 用の画像読み込みライブラリです。
公式サイトにもありますが、次のような良いところがあるそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/b64cdc6c-ef00-1e82-f658-dc1be17c2b85.png)

| 特徴 | 内容 |
| ——- | ——- |
| 処理が早い | メモリキャッシュ、ディスクキャッシュ、画像のダウンサンプリング、
ビットマップの再利用、画像読み込みリクエストの一時停止やキャンセルなど
様々な最適化を含めているので効率がよく早い |
| サイズが軽い | CoilはPicassoとGlide、Frescoと同等の機能を持つが、
1500メソッドぐらいのライブラリでサイズが軽い |
| 簡単に使える | Kotlinの言語機能を

元記事を表示

FACTORY START UP SERVICES, PLEASE WAIT FOR POWER OFF BUTTON 問題の解決

Xperia で 端末リセット(工場出荷状態)にした後に
「FACTORY START UP SERVICES, PLEASE WAIT FOR POWER OFF BUTTON」
と連続で表示される問題(とそれに続いて起こるあれこれ)の解決方法(の一つ)

他の情報でどうしても解決しなかったがadbコマンドでパッケージを無効化することで解決できた。

対象のAndroid端末以外に必要な環境

* adbコマンドが利用可能になっているPC
* Android端末接続するためのUSBケーブル

手順

* Android端末側でUSBデバッグを有効にして(詳細は省略)USBケーブルでPCと接続する
* PC側で作業コマンドプロンプトを開く
* 以下を実行

“`
$ adb shell
$ pm disable-user –user 0 com.sonyericsson.startupflagservice
“`

Package com.sonyericsson.startupflagservice new state: disabled-user
と表示されたら成功

元記事を表示

AndroidのlogcatをTSV形式に加工するrubyスクリプト

Androidのlogcatを解析する際にExcelやgoogleスプレッドシートに貼り付けて、
フィルタ機能を使って一部のログのみ抽出して表示したいので作ってみました。

## 変換スクリプト

“`ruby:locat2tsv.rb
#!/usr/bin/env ruby

while line = ARGF.gets
(date, time, pid_package, level_tag, message) = line.split(” “,5)
(pid, package) = pid_package.split(“/”)
(level, tag) = level_tag.split(“/”)

data = [“#{date} #{time}”, pid, package, level, tag, message]
puts data.join(“\t”)
end
“`

## 変換結果をgoogleスプレッドシートに貼り付けた例

スクリーンショット 2019-11-29 0.17.59.pngARCoreを使ったARアプリをエミュレータで動かす

ARKitを使ったARアプリはエミュレータで動かせませんが、ARCoreを使ったARアプリはエミュレータで動かすことができます。
エミュレータで動かす際に少しハマったことがあるので共有します。
(Unityで作成したARアプリは、この記事とは違うやり方なので注意してください。)
## 必要な環境
– Android Studio 3.1以降
– Android Emulator 27.2.9以降

## サンプルプロジェクトのダウンロード
この記事ではARCore SDKにあるサンプルプロジェクトを使用します。
[ARCore SDK](https://github.com/google-ar/arcore-android-sdk)をDLします。
そして、`samples/hello_ar_java`をAndroid Studioで開きます。

## エミュレータ
エミュレータを起動します。
端末によってはARCoreをサポートしてないため、エミュレータはなるべく新しめの端末の方がいいです。
API Levelは27(Oreo)以降が必要です。(API Levelも最新の29が良さそう

元記事を表示

【Androidアプリ入門】内部ストレージに保存・読込する♪ハマった編

今回は、[前回のAndroidアプリ](https://qiita.com/MuAuan/items/47d7b3dbafcc88eb235a)で内部ストレージに保存・読込を追加した。
情報は、ググるとそれなりに出てくるが結構ハマって、しかも日本語の読込は失敗しているが、現状進捗がなさそうなので、ここでまとめておこうと思う。

| 英語保存|英語読込|日本語保存|日本語読込|
|:-:|:-:|:-:|:-:|
|![eigo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/8fb815d8-4615-56e2-8de5-506a81858a14.jpeg)|![eigo_output.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/e9417090-5007-526a-9845-3e9b67e21f32.jpeg)|![nihongo.jpg](https://qiita-image-store

元記事を表示

Android Navigation Componentによる画面遷移時のToolbar

# はじめに
この記事ではNavigation Componentの基本的な使い方は記載していません。
Navigation Componentを使った画面遷移時のToolbarの処理に着目しています。

## Activityが持つViewの処理をActivityに書く
Toolbarを表示する際、ほとんどの場合ホストとなるActivityがToolbarを持ちます。
その際、ゲストのFragmentでToolbarに関する処理を書くと

“`Kotlin
val toolbar = view.findViewById(R.id.toolbar);
requireActivity().setSupportActionBar(toolbar);
“`
となりますが、あまり書きたくないです。
Toolbarに限らずFloatingActionButtonなど、Activityが持つViewに関する処理の変更はFragmentに書かずに極力Activityに書き、正しく役割分担することにより保守性を高めたいです。

## Navigation Componentによる

元記事を表示

AndroidでToggleButtonを用いてServiceを起動・終了させてみる(起動時に通知バーに表示させる)

# はじめに

Androidアプリ開発(javaも)を触るのはかなり久々で何も覚えていなかったのですが、ちょっと思い立ってアプリを作ってみようかと思って奮闘中です。あまり詳しくないので細かい解説は出来ませんしn番煎じ感が否めませんが、ログとして残す意味でも書いておきます。
昔は~~結構重かった~~Eclipseを使ってAndroid用のプラグインやらAVD入れてゴチャゴチャやって・・・って感じでしたが、今ではAndroid studioでレイアウトもGUIで直感的に作れるようになって、エミュレータやら外部端末の設定も楽々で、サクサクになっていて便利になりましたね。

# やりたいこと

ある一定間隔で何らかの処理をさせるAndroidアプリを開発したいと思っています。勝手に死んで欲しくはないので、ここでは`IntentService`ではなく、`Service`を使おうと思いました。
サービスの開始・停止には`ToggleButton`を使用します。

# 環境について

– 開発環境はAndroid studio 3.5.2
– テストを走らせる端末はAndroid 8.0.0 &

元記事を表示

UXデザイナーと連携する際に考慮したい事項

1ピクセルのデザインにこだわるUXデザイナーとの連携で、いろいろ苦労した経験からの知見を簡易的にまとめます

## ピクセル単位での調整を可能にする
エンジニアが、都度、確認できるデザインスペックが必要
XD、Sketch、Prott、Abstractなど、ピクセル単位で確認でき、素材を書き出せるツール・サービスを使う

## 要件定義書
最初、エクセルやスプレッドシートを使っていたが、エンジニアは更新しやすいものの、デザイナーや企画者は使いづらい
さらに、デザインスペックを別で用意する必要がある
→ XDで要件定義を作成してもらい、デザインスペックも同時に作成&確認できるようにした

## ワイヤーフレーム
要件定義からデザインを起こすまでのステップで、デザイナーがどのレベルまでデザインに落とし込めばいいか分からない
→ アプリエンジニアは、要件とデザインの両方がないと、実現可能かを判断できないケースが多いので、ある程度のデザインは必要だが、完成版を見せられると、その時点で判断不能に陥ることが多いので、ワイヤーフレームレベルのデザインで十分。
デザイナーとエンジニアで話し合うステップ

元記事を表示

Android(Pixel 3) OSダウングレード手順メモ

#はじめに
Androidアプリ開発で、OS依存の問題かを確認するためにAndroidOSをダウングレードする必要がありました。
少しハマったので手順をメモします。Android Studioは使わずに実施しました。
バックアップしてから実施してください。

#環境
PC:MacBook Pro
Android端末:Pixel3 AndroidOS10

#やりたいこと
Pixcel3のAndroidOSのバージョンを10から9にダウングレードしたい。

#手順
###1.ファクトリーイメージのダウンロード(PC)
pixcel3のイメージは以下にありました。
https://developers.google.com/android/images#blueline

###2.ダウンロードしたファクトリーイメージのフォルダを展開する(PC)

###3.カレントディレクトリを2で展開したフォルダに変更する(PC)

###4.開発者向けオプションの『OEMロック解除』と『USBデバッグ』を有効にする(Android)
開発者オプションの表示の仕方は以下。
https://enjoyp

元記事を表示

[ Android ] HTTP通信時に発生するタイムアウトエラー処理

AndroidでHttp通信を行う際、起きるタイムアウトの処理について述べる。

##サンプル
まずHttp通信は以下のような処理を行う。

~~~java
HttpURLConnection connection = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(20000); // 接続タイムアウト
InputStream is = connection.getInputStream();
}catch・・・
~~~

##接続タイムアウト
サンプルではタイムアウトを20secに設定してある。サーバからのレスポンスが20se

元記事を表示

MediaPlayer Classを使う

MediaPlayerの機能を使ってみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505344/40d450a5-5b9b-0446-da69-80754f3d778f.png)

簡単なI/Fを作ります。

“`xml:activity_main


元記事を表示

AdaptiveIconに対応する

## 環境
Android Studio 3.5

## 概要
AdaptiveIconについては下記URLを参照。
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive?hl=ja

## アイコンの表示の違い
![4rv4JcAaT-clipboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153821/bdd71dba-f161-4085-198b-acac3f57a95a.png)
未対応の場合はアイコンの中央に配置された状態でアプリアイコンが表示されます。

## 様々な形状に対応
![H5vvlsNGi-clipboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153821/fccee963-17f6-976b-3ed4-450726ecace8.png)

## 画像の用意
使用する画

元記事を表示

Coroutines私的メモ1

これは私的なCoroutinesに関するメモです。
今回はlaunch, runBlocking, join, supervisorScopeについて触れます。
もし指摘点ありましたら遠慮なくまさかり飛ばしてもらえればと思います。

# Coroutinesとは

中断(suspend)と再開(resume)の機能によってスレッドよりも**低コスト・可読性高く非同期処理を扱える**

# 導入

Kotlin1.3でstableになりました。

“`gradle
dependencies {
def coroutines_version = “1.3.2”
implementation “org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version”
implementation “org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version”
}
“`

stableは[こちら](https://mvnrepository.

元記事を表示

Kotlin+Realm+RecyclerViewを使ってTodoアプリを作る

# Kotlin+Realm+RecyclerViewを使ってTodoアプリを作る

Realm を使ったシンプルなサンプルアプリを作ってみました。
最初にダミーデータを作成しRecyclerViewを使ってリスト表示します。
今回はセルがタップされたときにデータを削除し、メッセージをToastで表示するようにしました。

全てのソースコードは[こちら](https://github.com/konatsup/RealmTodo)にあります。(GitHub)

# 環境

– Kotlin 1.3.50
– Realm 5.15.2
– realm-android-adapter 3.1.0
– recyclerview-v7:29.1.0
– cardview-v7:29.1.0
– targetSDK: 29

# 手順

1. Realmの初期設定
2. CustomAdapterの作成
3. データ作成と一覧表示

元記事を表示

Android Chrome/78.0.3904.108 にて起こっているpreload問題とその暫定的対応

## 何が起こっているのか

– [AndroidのChrome 78のPreload問題](https://qiita.com/m_kumamomi/items/3b01bf0336d30f84f4b5)

内容は上記の記事を見てもらうとすごくわかりやすくまとめてくれています。(同僚さんの記事です)
おそらく、ページ内の行動履歴?に関係する関連の高いaタグのhrefの中身を「自動で」preloadしてしまっているという問題

## で、フロントとしてどうしたのか
まず、被害の大きい箇所、ページを調べて

“`
a href=”/hogehoge/bar”
“`

“`
span data-href=”/hogehoge/bar”
“`
という風に書き換えた上で、あとはJS側でdata-hrefの中身をclickでlocation.hrefに入れて飛ばす方法で暫定対応。
それか

“`
a data-href=”/hogehoge/bar”
“`
という風にして、load時にdata-hrefの中身を抜き取ってhrefに入れるとかでも行けそうな。

## 雑感
ひとまず

元記事を表示

Kotlinでinterfaceの実装を本番用と開発・検証用などで分ける場合のTIPS

以下のようなRepositoryをinterfaceとして定義したとする。

“`kotlin
interface HogeRepository {
suspend fun hoge()
suspend fun piyo()
}
“`

本番用のリポジトリとして `HogeRepository` を実装する。

“`kotlin
class HogeRepositoryProduction : HogeRepository {
override suspend fun hoge() = withContext(io) {}
override suspend fun piyo() = withContext(io) {}
}
“`

開発や検証用のリポジトリは本番用のリポジトリの実装を受け継ぎつつ、必要なところだけ書き換える。

“`kotlin
class HogeRepositoryDevelopment(
private val production: HogeRepositoryProduction
) : HogeRep

元記事を表示

monacaでandroidのプッシュアイコンを設定する方法

# config.xmlに以下の内容を記述

“`



“`

android:value=”0x01a2c1″のところで、16進数で色番を指定すると色がつけられるよ!

# monacaとのやりとり

### 問合せ

現在、アプリの設定でアイコンを設定しておりますが

元記事を表示

SESで、面談時に地雷案件をなるべく避けるための確認ポイント7選(iOS/Androidアプリ開発)

私は、客先常駐でアプリを開発、保守するのをメインに5年ほどお仕事してきました。
iOSとAndroidのどちらかを担当して、機能やスケジュールの提案をしつつ、もくもくと開発していることが多いエンジニアです。

常駐のため、現場が変わるごとに面談があり(法律なんか知らん)、その度にやばそうな雰囲気の出てる案件は基本的に避けるようにしています。
現場に入る前の面談で、これを確認すれば、地雷案件を少し回避できるポイントがなんとなくわかってきたので、メモっておきます。
**※あくまで個人的な指標であって、なんの根拠もないです!!**

## 保守案件の場合は、アプリのストア評価を確認

保守案件で、ストアの評価が低いアプリは可能な限り参画を回避します。

理由は、

* ストアの評価が低いものは、内部の品質が基本的に低い
* 新たな開発はできずに、既存バグの修正に追われて疲弊する
* ただのバグ修正ではスキルがつきにくい
* クソコードを見ると発狂する(コントローラにAPIリクエストが入っているとか無理)
* ひどい場合、gitすら使ってない
* その他色々

だからです。
何より、**過去に

元記事を表示

僕がAndroidアプリ開発をする上で気を付けていること

 こんにちは!データベースからデータを取り出す際によくCursorIndexOutOfBoundsExceptionと怒られるヨースケです。だいたいがmoveToFirst()の書き忘れで、初めてデータベースを使ったときもこのエラーでした。最初は訳も分からずめちゃくちゃ原因を特定するのにだいぶ時間がかかりました(笑)。

 今回はアプリ開発をするときに気を付けていること、心掛けていることを書いていこうと思います。

– 普段使っているアプリを注意深く見る
– コピーはするがペーストはしない
– ユーザー目線
– 設計書的なものを書く

### 普段使っているアプリを注意深く見る
 これは開発する時のレイアウトの参考になります。特に意識はしていませんが、初めて使うアプリやいろんなところで見かける端末で表示されているシステムチック?なものを見るとどういうプログラムなのかなぁとか、これはダイアログを使っているのかな?とか考えちゃいます。
 例えば![twitter.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

データ復旧、デジタルフォレンジック手法の体験談(Android編)

前のCTF記事https://qiita.com/55momotara55/items/03ccd0e111b38061e6fc
はすごく簡単なADBサービスを利用してAndroidデバイスを侵入する手法なんです。
昨日も会社のインターンシップの同年生から「俺のスマホでやってみる?」聞いて、経済的な方面から考えると諦めしました(弁償の可能性無限大)。

ですから今日朝もう一度この模擬Androidをチェックする時、この中に面白いサービスを発見しました。
/system/xbinの中に**busybox**というツールが入ってます:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526362/46073b1f-347a-1bdc-a3d6-45f125bfd367.png)

**busyboxはLINUXの常用コマンドをAndroidデバイスに実行できるようなツールです。**

**フォレンジック原理**:busyboxをインストールしているANDROIDデバイスを**dd**コマンド

元記事を表示

OTHERカテゴリの最新記事