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

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

[Android]TextView の文字の大きさを自動的に調整する(Autosizing TextViews)

# はじめに

Android の TextView では View サイズに応じて、
文字の大きさ(TextSize)を自動的に調整する機能が実装されています。
その機能について調べたので、簡単に使い方をまとめたいと思います。

# View サイズに応じて TextSize を自動的に調整する

次のように TextView の autoSizeTextType を uniform に設定すると、
TextView の View サイズに応じて TextSize が自動的に調整されるようになります。

“`xml:activity_main.xml

元記事を表示

【Unity】これ以上セーフエリア対応で消耗しないためのアセットを作った【AutoScreen】

**[AutoScreen](https://github.com/su10/AutoScreen)(GitHub)**

![AutoScreen_01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27863/00c476b7-adc2-a981-8136-ec8d35fd8f28.gif)
![AutoScreen_02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27863/19666be0-5fd5-2966-300e-6886f7beaf1d.gif)

# はじめに
Unityにおけるセーフエリアの対応に関しては`Screen.safeArea`というAPIがあるのですが、ビルドして実機で呼ばないと端末ごとの値が取れない=エディタ上ではレイアウトの確認ができないという辛さがあります。

最近だとUnite Tokyo 2019でも紹介された[Device Simulator](https://docs.u

元記事を表示

Scoped Model を利用した場合の画面遷移でうまくいったコード例(Flutter)

最近Flutterをいじり始めました。Scoped Modelを利用するとスッキリ書けるので、そのコードを書いたときの画面遷移時に具体的にどうコードを書くとうまくいったかをレポートします。

# [Scoped Model 初めて聞いた方へ]Scoped Model とは

公式のパッケージサイトは下記です。

https://pub.dev/packages/scoped_model

基礎原理の解説について下記記事が参考になりました。

https://qiita.com/hayassh/items/690fa0d6528e056617b5

自分の言葉で書くと、数値や文字列の処理部分とデザインテンプレート部分をModel定義をすることで綺麗に分離ができます。あと、このパッケージは、GoogleのFlutter開発チームが提供してくれているVeggie Seasonsというアプリのコードにも採用されていたので、自分もやってみようと思いました。Veggie Seasonsのコードは以下です。

https://github.com/flutter/samples/tree/mast

元記事を表示

BottomNavigationViewのアイテムを動的に隠す

## はじめに
業務において「条件に応じてBottomNavigationViewのアイテムを隠す」
という要件があって調べたので備忘録として残しておきます。

## 実装方法
最初はVisibilityを触って非表示にする方法を調べていましたが、remoteItemを使うのが正解のようです。

“`kotlin
mBottomNavigationView.getMenu().removeItem(R.id.item_name);
“`
## 結果
「カリキュラム」というメニューを隠してみました。

### 通常時
通常はBottomNavigationが4つのメニューアイテムを持っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68671/879c66b9-3480-7837-bcc1-093edee769c2.png)

### removeItemで隠した時
このようにカリキュラムのメニューが隠れ、3つのメニューアイテムとなりました。
![image.png](htt

元記事を表示

Androidで文字を点滅するメソッドができてうれしい

 こんにちはヨースケです。文字列の一致に”==”を使っていました(笑)。equalsですね!

### 初めて作ったアプリで実装
 この文字を点滅させるメソッドは、初めてアプリを公開した時に実装したものになります。[計算問題付き電卓](https://play.google.com/store/apps/details?id=first.myapp.mycalc)←このアプリは名前の通り電卓に計算問題を出す機能を付けたアプリとなっています。計算問題がスタートするとタイマーをスタートさせ、全10問クリアするとタイマーがストップしそのタイムで点滅するようにしました。また、答え終わると過去のクリアタイムを表示するようにしています。

### ソースコード
 あんまり長ったらしくなってもよくないので稚拙なコードではありますが自分自身の備忘録として貼っておきます。

“`java:Quest.java
public class Quest extends AppCompatActivity {
private final Handler handler = new Handler();
//タ

元記事を表示

CameraXでImageProxyを扱おうとすると ‘Image is already closed’ でクラッシュする

## はじめに
CameraXで撮影した画像をBitmapに変換しようとした時に以下のエラーで苦しめられたのでメモっておきます。

“`
java.lang.IllegalStateException: Image is already closed
“`

## かいけつ
撮影時のリスナーである `onCaptureSuccess` 内でコンストラクタを呼んでたのが原因でした。

#### failed

“`kotlin
override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
super.onCaptureSuccess(image, rotationDegrees)
// do
}
“`

#### success

“`kotlin
override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
// do
}
“`

## なんでか
`onCaptureSuccess

元記事を表示

WindowInsetを理解する

`android:fitSystemWindows` とか、 `setOnApplyWindowInsetsListener` とか `StatusBar` とか `NavigationBar` とか `DrawerLayout`とか、 `SYSTEM_UI_FLAG_..` とか難しいですよね??

それを紐解いていきたいです。
それを理解していくにはAndroidでonApplyWindowInsets()がどのように呼ばれているのかを理解していく必要があります。

# 最初にまとめ

* ViewツリーでonApplyWindowInsets()が深さ優先で呼ばれる。
* 他のレイアウトでWindowInsetがconsumeされると意図した場所でonApplyWindowInsets()が呼ばれないので注意
* setSystemUiVisibilityでSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONなどを設定するとアプリのレイアウトがstatusbarなどに食い込むようになる
* setOnApplyWindowInsetsListenerでins

元記事を表示

Kubernetes上でdocker-androidを動かすためのyaml

“`

apiVersion: v1
kind: Service
metadata:
name: android
spec:
type: NodePort
ports:
– name: android-vnc
port: 6080
nodePort: 30680
– name: android-console
port: 5554
nodePort: 30554
– name: android-adb
port: 5555
nodePort: 30555
– name: android-appium
port: 4723
nodePort: 30723
selector:
app: android

apiVersion: v1
kind: Pod
metadata:
name: android
labels:
app: android
spec:
containers:
– name: android
image: budtmo/do

元記事を表示

WSLでAndroid CTSを動かす

WSLでもAndroid [CTS](https://source.android.com/compatibility/cts) を動かせるかテストしてみた。結論としてはそこそこ動く。

# はじめに
試してみた背景・・。
CTSはLinux環境の実行が想定されているが、実行用のラッパーとなるシェルスクリプトから先はjavaが多く使われていて、
過去にはCTSツール内のシェルスクリプト相当のバッチファイルを用意してあげればWindowsでもそこそこ動いていた。
制約のある環境は使うべきではないと考えて完全にLinuxで実行するようにしていたが、
ふとWSLを使えばバッチファイルよりは手軽にWindowsから実行する環境が作れるのではと思い試してみた。
そこそこ動くが、WSL性質上Linuxと異なるところでfailしたりうまく動かない箇所が想定されるため、Linux環境があればあえてWSL使うべきではない。

以下はWindows10ホスト側にはadbインストール済み。
WSLもインストール済みの環境を使用している。WSL自体のインストール手順は割愛。
WSL環境にopenjdk、adb

元記事を表示

Project needs to be cconverted to androidx.* dependencies が出て module が追加できないときの workaround

# はじめに
まだ AndroidX に移行できていない Android の project で、Android Studio (恐らく 3.5 以降)でモジュールを新規追加しようとしたときに、 `Project needs to be cconverted to androidx.* dependencies` が表示されて module が追加できないケースに遭遇しました。
スクリーンショット 2019-11-24 6.47.16.png

AndroidX 対応を推奨しますが、取り急ぎ module を追加できるようにする workaround があったので紹介します。

# Workaround
1. `gradle.properties` に `android.useAndroidX=true` を一旦追加す

元記事を表示

androidxライブラリの移行で困ったことと対処法

# 問題

AndroidでMQTTを使う場合に重宝するPahoだが、pahoライブラリ使用側をandroidxに移行してもpaho自体はandroidxライブラリを取り込んでいないようでExceptionが吐かれてしまった。
環境は、pahoのandroid.serviceの1.1.1を使っている状態。

~~~
implementation ‘org.eclipse.paho:org.eclipse.paho.android.service:1.1.1’
~~~

吐かれたException。

~~~
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager;
at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:450)
~~~

# 対処法
今回のケースではLocalBroadcastManage

元記事を表示

Visual Studio 2019のC#・Android環境にて、指定した画像中に任意のファイルを埋め込む。コードのサンプルです。

表題の通り
Visual Studio 2019のC#にて、
Visual Studio 2019のC#にて、直接バイナリを叩いて指定した画像中に任意のファイル情報を埋め込む。
ステガノグラフィーに関する。コードのサンプルでございます。

特段、NuGetなどで他のプラグインや
別途外部dllを必要としないようにしています。

#概要
任意のファイルを、画像に埋め込む際に
バイナリを以下のように、直接叩いています。

**1.**指定した画像のバイナリを一旦すべて読み込む。
**2.**埋め込む任意のファイルのバイナリも、すべて読み込む。
**3.**画像の各バイナリを8桁の2進数にして、11111111とのようにする。
**4.**8桁の2進数の内、下位4桁をバッサリと切り捨て、1111—-とのようにする。
**5.**埋め込むファイルの各バイナリを8桁の2進数にして、00000000とのようにする。
**6.**8桁の2進数の内、上位4桁と下位4桁に分割して、0000/0000とのようにする。
**7.**画像の各バイナリを上位4桁の2進数に、
  埋め込むファイルの下位

元記事を表示

AndroidをハッキングするあるCTF例題の体験談

 こんばんは、より良い日本語でサイバーセキュリティ記事を書けるように祝日も頑張っている55momotara55です。
  残念ながら昨日インターンの会社で「完全初心者向けのmetasploit」の使い方を紹介する記事を書いたのですが、退勤までいつも使っている「TITANIA」というlinuxのバーチャルOSが不具合があり、データが一瞬で飛ばしてしまいました。。。。。。。:frowning2:
 **とりあえず今日はAndroid 4.4バージョンのOSを侵入する体験談です。**

 
テスト目標:Android 4.4
ペネトOS:kali·linux
**CTF環境:https://www.vulnhub.com/entry/android4-1,233/**
Level:easy

**1,ANDROIDを起動**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526362/5e277a15-b93e-655f-10e9-e98a0b44559f.png)

**2,一番目のAndr

元記事を表示

Flutterで環境構築からHelloWorld & スプラッシュまでやってみた。【環境構築編】

# 概要
自己学習で、Flutterを触ってみました。
サンプルアプリ&スプラッシュ起動までの環境構築手順となります。

# Flutter is何?
>Flutter は Google 社が開発しているオープンソースのアプリケーションフレームワークです。
クロスプラットフォームに対応しており、ワンソースで複数のプラットフォーム(iOS、Android、Web、Windows、Mac、Linux)に対応したアプリケーションを開発することができます。
また、マテリアルデザインによる美しい UI を利用することができます。

だそうです。
逆にオリジナリティー溢れるデザインは適応しずらいって事ですかね。

そのほかにFlutterは以下の特徴があります。
– Dart 言語 による開発
– ホットリロード(記述したコードをリアルタイムに反映)
– 高速な動作

# 環境
– macOS Catalina version 10.15.1
– Flutter v1.9.1+hotfix.6 // Stable版
– Android Studio 3.5.2 for Mac
– Android

元記事を表示

Stetho導入

# はじめに
AndroidStudioでProfilerがあり、そこでNetworkの通信内容を見ることが可能ですが、業務でAirWatchに対応した際に実機でProfiling出来なくなってしまったので如何に通信内容を調べようかと思案していた。
パケットキャプチャ出来ればいいんですが、社内のソフト管理が厳しく申請通すのが~~ひどくめんどくさく~~時間を要するので何かいいのがないかなーと調べていたところ、Stethoを見つけて使ってみたのでその時の記録を残すものである。

# 環境
Mac Catalina

# Stethoとは
一時期仮想通貨でニュースを賑わせていたFacebookが公開しているオープンソースなライブラリ。
ライセンスはBSDなので厳しくない。
パースしている内容はChromeで見る。
今回はNetworkだけをターゲットにしているけどRealmとかViewのヒエラルキーとか色々見ることが可能。
同じようなライブラリでFlipperなるものもあるけどFlipperのアプリをPCに入れる必要がある。
ちなみにFlipperは昔Sonarって名前だったみたいです。(D

元記事を表示

Android で OpenCV のサンプル camerapreview を試す

[AndroidStudio で OpenCV をインポートする]
(https://qiita.com/ohwada/items/71eb18296aac46f9f5ee)
の続きです。

### 概要

Android 用 OpenCV には、
8個のサンプルが同封されている。

そのうち camerapreview は、
基本となるサンプルなので、少し詳しく説明する。
OpenCV の Java / Android の API に関するドキュメントはないようです。
ソースコードを解読した。

### OpenCV の Mat

OpenCV で扱う画像の形式です。

参考 [OpenCV の Mat ってやつの話](http://shimikel.hatenablog.com/entry/2015/07/25/190139)

参考 [cv::Matの基本処理](http://opencv.jp/cookbook/opencv_mat.html)

参考 [OpenCVのMatとbyte[]の相互変換](https://qwx.jp/opencv-interconversion-

元記事を表示

onGlobalFocusChangedにnullを食わされる

AndroidTVとか、キー操作でフォーカスを移動するアプリを作る際に使いがちな
ViewTreeObserver.OnGlobalFocusChangeListener

唯一のPublic methidはdeveloper.android.comのreferenceによると以下のように定義されています
abstract fun onGlobalFocusChanged(oldFocus: View!, newFocus: View!): Unit

~~だけど~~実際に使ってみるとoldFocusにnullが入ってきたりします
https://developer.android.com/reference/kotlin/android/view/ViewTreeObserver.OnGlobalFocusChangeListener.html
には以下のような記載が
When the view tree transitions from touch mode to non-touch mode, oldFocus is null.

kotlinではAndroid StudioがV

元記事を表示

備忘録: Android ChromeアプリでのURLスキームIntent呼びだし

# 事前情報
AndroidのChromeアプリでURLスキームを利用して、Androidアプリを起動する際に気をつけるべき、不具合?仕様?があるので忘れないためというのと、記事がどこにもなかったため他にそのパターンに出会う人がいた時のために記事にしておきます。
あらかじめ書いておくと、ここに不具合なのか仕様なのかはわかっていません。またそれに対する回避方法などもわかっておりません。
ただ、意図しない挙動が起こるという事実だけを記載します。
ちなみに1週間ずっと悩んだ挙句答えに辿りつきませんでした。。。。

# 概要
AndroidのアプリをChromeブラウザアプリから起動させる際にURLスキームを利用するとブラウザバックが起こるという内容です。

# ブラウザバックが起こるパターン
## 前提条件
OS Android
ブラウザ Chrome
画面A/画面B 2つ
呼び出すスマホアプリ 1つ

## 前提条件詳細
– 画面Aには画面Bへの別タブで開くaタグが記載されている

“`screenA.html

元記事を表示

イノベーション仮説のMVPを作ったらクソゲ―になった!

**学びがあったから大丈夫!まだ一度もピボットしていないから余裕!(挨拶)**

### あらすじ

すげー電車激込み状況でも平然とゲームやってる人居ますよね。そっと手を伸ばして電源ボタンポチーしてしまいたいけど、輩に逆ギレされるより

ゲーム中断→課金モチベーションが下がる→機会損失が発生→ゲーム会社が儲からない→クラウドが売れない→ICT業界が停滞→リストラ!

という、いけないなんちゃら先生ロジックが恐ろしいのでできん!!笑

なので、逆説的に仮説を立ててみました。

満員電車でもゲームをやりたい→ならゲームを楽しむ意欲は強いはず→ならよりゲームを楽しむためには我慢ができる→であれば**ゲームを我慢する事でゲームをより楽しむ仕組みがあれば良い**

?????

何言ってんだかさっぱ。

されどこの仮説ロジックをコード化すると

**「満員電車に詰め込まれている人のBLEデバイス数をゲーム内の成長経験値に換算すれば良いのでは?」**

アンド

**「あとBLEデバイスのMACアドレスから昔流行った[バーコードバトラー](https://ja.wikipedia.org/wik

元記事を表示

F#でAndroidアプリ開発 Helloworld編

F#でandroidアプリ開発の基本となるHelloworldを出力する方法を紹介します.

まずはVisual Studio 2019を起動します.
「新しいプロジェクトの作成(N)」→「空のアプリ(Android)」を選択します.

![1_createProject.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521336/212ae8bf-75af-a98b-f4e0-82223454af49.png)

任意の「プロジェクト名(N)」「場所(L)」「ソリューション名(M)」を入力し,作成します.

私の環境では下記のエラーが表示されます.
もしも表示されない場合はこの項目は飛ばしてください.

FSharp.CoreとXamarin.Android.Fsharp.ResourceProviderのパッケージが見つからなかったようです.

![2_errorMessage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

OTHERカテゴリの最新記事