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

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

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.

元記事を表示

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とのやりとり

### 問合せ

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

元記事を表示

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

私は、客先常駐でアプリを開発、保守するのをメインに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**コマンド

元記事を表示

Eclipse環境でAndroid4.2.2のcognito認証を頑張る

#概要
Android 4.2.2のアプリにAWS SDKを導入し、cognito認証してIDトークンを使いたい。

– OS
– Windows 10 Pro 64bit
– 開発環境
– Eclipse
– 言語
– Java
– ターゲット
– Android 4.2.2 (API 17)
– 使用したもの
– AWS SDK for Android 2.16.1
– gson-2.2.4.jar
– support-annotations-27.1.1.jar

なぜ今さら Eclipse なのか? Android 4.2.2 なのか? という点は**気にしてはいけない。**

#結果
Android 4.2.2でcognito認証が可能になった。
が、**IDトークン取得が初回は絶対に失敗する**。(2回目以降は普通に成功)

Android 4.2.2が暗号モードGCMに対応していない事が関係している模様。
(cognitoはデフォルトでは暗号モードGCMを使っているっぽい?)

#内容
##AWS SDK for

元記事を表示

実機Android端末のChromeでデベロッパーツールを使ってデバッグする方法

# 要望
実機のAndroid端末で特定のWebページに対し、Webインスペクタで中身を書き換えたり、コンソール経由でスクリプトを叩いて実行した結果を見たい。

-> [iPhone版](https://qiita.com/unsoluble_sugar/items/2a3d06631a6b8259dc44)

# Android 端末のリモート デバッグを行う
MacのChromeやAndroidエミュレーターでもある程度の表示確認はできるが、やはり実機での操作感や見た目の確認は重要である。

スクリーンショット 2019-11-26 16.46.24.png

少し調べてみたところ、MacとAndroid端末を接続することで、PCと同様に実機での動作確認が可能なことが判明したため、実際に試してみた。

[Andro

元記事を表示

AndroidのChrome 78のPreload問題

問題になっているサービスは多いのではないかと思いつつも、あまり騒ぎになっていないので不思議だなと思っているkumanomiです。

# どんな問題なの?
AndroidのChrome78.0.3904.108にて、Preloadの機能が有効になりページ内のリンクを勝手に踏んでしまい予期せぬ挙動をしてしまう問題が発生しています。

## たとえば・・・
– ログインをしようとした際にプリロード機能によって勝手にログアウトのリンクが踏まれてしまいログアウトしてしまう

– 商品の購入や予約ができない

– 強制的にトップページに戻されてしまう

– 選択したものと異なる振込先が選択された状態となる

**結構致命的なものも多いと思うんですよね 。**

## 同現象が起きているサービスなど一部抜粋
– [無印良品](https://www.muji.net/mt/media/archives/2019/11/24_121500.html)
– [高速バスネット](https://www.kousokubus.net/BusRsv/ja/information?key=HG5jn-PE6

元記事を表示

ImageViewの表示領域内に収まらない大きな画像を自動スクロールで表示する

## きっかけ
– 2019 Material Design Awardで入賞した**Trip.com**を見て、自動スクロールで画像を表示していて良い感じだなと思ったので試してみました。

## record-191125110141.gif


## 動作環境

– Android Studio 3.5.2
– Android 10, 5

## サンプルコードについて
– 画像の自動スクロール
– カスタムビューで実装する


## 画像の自動スクロール

## 画像の自動スクロール
“`xml:activity_scroll_image_view.xml

元記事を表示

ExoPlayer追加でInflateExceptionになったときの対処法

## 現象
ExoPlayerライブラリ追加してレイアウトXML作成しビルドしてみたところ以下のようなエラーログが表示されました。

“`
Process: com.example.exoplayersample, PID: 12229
android.view.InflateException: Binary XML file line #10 in : Binary XML file line #10 in : Error inflating class com.google.android.exoplayer2.ui.PlayerView
Caused by: android.view.InflateException: Binary XML file line #10 in com.example.exoplayersample:layout/fragment_first: Error inflating class com.google.android.exoplayer2.ui.PlayerView
Caused by: java.lang.r

元記事を表示

Firebase App Distribution で App Distribution found more than 1 output file for this variant のエラーが出たときの対応

# はじめに
Firebase App Distribution の `appDistributionUpload` の Gradle task を実行した際に

“`
== BUILD FAILED ==

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:app:appDistributionUploadXxxYyy’.
> App Distribution found more than 1 output file for this variant. Please contact firebase-support@google.com for help using APK splits with App Distribution.

“`
が表示された場合の解決方法です。
(APK splits を行っている Android project で再現します。)

# 原因
ビルドを行うと複数の apk ファイルが生成され、どの apk ファイルがアップ

元記事を表示

【Android入門】英語・タイ語・日本語入力の判定とOK・NGボタンの配置♪

Androidアプリを作り始めて気が付いたが、スマホだと入力方法としてGoogle音声入力が選べる。
それは、スマホの環境設定によって入力言語を日本語、タイ語、英語など多くの言語に対応している。
そして、Google音声入力がそれらの言語で入力できる。

しかも、いろいろな言語で入力できるだけではなく、イントネーションなどにより言語を自動的に選んでくれる。
逆に云うと、英語で入力しようとしても余りに日本語的だとカタカナなどで入力されてしまう。
また、英語になっても
This is a pain
などと間違った単語が選ばれることもある。

ということで、今回は、このきちんと思い通りの入力が出来た時をOK、間違った選択をされた時、NGのボタンを配置してそれぞれの回数をカウントアップするようなアプリにしてみた。

ここで必要な技術は、主にボタンの配置とカウントアップするカウンターの配置である。
出来上がったアプリの画面は以下のようなものである。
ここでは、カウントも入力・出力で構成したので、余分に配置されているが以下で改善した。

|英語|タイ語|英語?|日本語|
|:-:|:-:|:-:|

元記事を表示

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

[AppiumでFlutterアプリのテストを自動化する 環境構築編 – Qiita](https://qiita.com/hiesiea/items/b4e31b6f1f585a93bae1)
の続きになります。
実際にテストコードを書いて、それを実行するところまでやります。
今回は勉強も兼ねつつ、比較的に簡単に用意できそうな「Python」を使います。

# 前提条件

– Appiumの環境構築が完了していること

# pipコマンドのインストール

PythonはMacで標準で入っているはずなので、特に新たにインストールする必要はありません。
pipコマンドもすでに使えるはずですが、もし入っていなかった場合は、
https://bootstrap.pypa.io/get-pip.py
をダウンロードし、ダウンロード先で以下のコマンドを実行してください。
(うまくいかない場合は、頭に“`sudo“`と付けて実行してみてください)

“`
python get-pip.py
“`

# Appium-Python-Clientのインストール

以下のコマンドを実行し、App

元記事を表示

Unity + DockerでUnityプロジェクトからAARファイルを自動生成

# はじめに

*UnityのSceneをAndroidのSubView(FrameLayout)として埋め込むまで*
https://qiita.com/_nonono/items/253aa15d6027ecc8ad66
このような記事があり、AndroidにUnityのシーンをFrameLayoutに埋め込むことができます(便利

**Unityで開発せずビルド成果物(AARファイル)のみ必要な場合**
1.指定のバージョンのUnityをインストール
2.Unityを立ち上げAndroidプロジェクトをExport
3.Android Studioでビルド
上の3つの作業を手作業で行うので一苦労だと思います
Unity、Android Studioのバージョンを意識したりしなければならいので良い方法が必要です

「なんとか良い方法を!」と思って `Unityの入ったDockerイメージを使ってAARの生成を自動化` してみたので、作業を下に記していきます

# TL;DR
いきなり一連の作業をスクリプトにできないので、dockerの中で作業を1つずつして、最後にスクリプトにまとめ

元記事を表示

Flutter desktop embedding を Ubuntu にインストール&試してみる

Flutterで書いたアプリケーションをデスクトップ環境でも動かせるようにする、Flutter desktop embeddingをUbuntu 18.04環境で試してみたので、その手順をまとめておきます。

# 環境構築の手順

## Flutter SDKインストール

リポジトリからcloneした後は、適当なパスに配置して、パスを通しておきます。

“`shell
$ git clone https://github.com/flutter/flutter
$ sudo mv flutter /usr/local/
$ export PATH=$PATH:/usr/local/flutter/bin
“`

## Android Studioインストール

[https://developer.android.com/studio](https://developer.android.com/studio)からLinux版をダウンロードして適当な場所に置いて、インストールスクリプトを叩きます。

Android Studioのインストールで基本的には次へを押していく感じです。

元記事を表示

Android Builderの使い方

本内容は以下のサイトを参照して作ったです。
https://blog.csdn.net/androidxiaogang/article/details/80586631 

// static 内部クラスの使い方
外部クラスの属性は多いし、可変し、絶対必須ではない。
そして、使用者によって非必須の属性を設定するのは使用者次第なので、
普通のやり方で、各属性のset関数でやります。
或いは、いっぱいのコンストラクタ関数を用意する。

Builderのコンストラクタ関数は可変で、使い方は便利である。
個人的な感じはBuilderパータンの方法は普通の使い型より少しだけを簡単になる。

以下のクラスの使い方法は
NutritionFacts nutritionFacts = new NutritionFacts.Builder(240, 8)
.calories(100)
.sodium(35)
.carbohydrate(27)
.build();

サンプルコード:

public class TestSta

元記事を表示

[ Android ] バージョンを指定する方法

androidでバージョンを指定するにはbuild.gradleファイルを用いる。

##ファイルの場所
まずプロジェクトを表示する。
![スクリーンショット (164).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/7bd97c81-8a07-e139-1f9e-3317f49d8e68.png)

そのなかにbuild.gradleファイルがあるので、これを開く。
![スクリーンショット (165).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/9a316573-6f87-8b68-087b-78eefc54f725.png)

そこに以下のような記述がある。ここを変更する。
![スクリーンショット (166).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/1488b7cb-3024-e9

元記事を表示

OTHERカテゴリの最新記事