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

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

dexファイルってなんだっけ

先日開催された[Android Dev Summit’19](https://developer.android.com/dev-summit)の中の[“Shrinking Your App with R8″というYoutube動画](https://www.youtube.com/watch?v=uQ_yK8kRCaA)をきっかけに、Androidアプリのコード圧縮ツールであるR8について調べていたのですが、その中で出てくる**dex**について完全に忘れていたので復習しました。

## 結論

まず結論から言うと、大雑把に表現するならば、**Java(Kotlin)ファイルをAndroid環境で実行可能な形式に変換圧縮したものがdexファイル(classes.dex)**です。

## R8とdex

そもそもR8ってなんだっけ?という点については、[上記の動画を更にサマリーしたスライド](https://speakerdeck.com/nichiyoshi/shrinking-your-app-with-r8-android-dev-summit-19-falsematome)

元記事を表示

ChromebookのAndroidアプリでエンターキーで改行できない件の対策

# はじめに

半年ほど前から、Chromebookの一部機種でAndroidサブシステムがAndroid 9ベースの物に入れ替わり始めました。この上で動作するAndroidアプリでEditTextの動作不良が出るようになりました。具体的には、マルチラインのEditTextでEnterキーを押した時に改行コードが入力されない、という問題です。Shift+Enterは何故か動きます。同じアプリを本物のAndroid+Bluetoothキーボードで動作させた場合は、問題なく動作します。しばらく原因不明で手が出せなかったのですが、ようやく原因が分かりました。

EditTextにEditorActionListenerを設定した場合に、actionId=actionNextでリスナが呼ばれることが分かりました。

“`kotlin
edittext.setOnEditorActionListener { v, actionId, event ->
Log.d(“====>”,”$actionId $event”) // actionId=5が出

元記事を表示

API23未満でTextViewにsetDrawableTintを使う

# はじめに
TextViewにアイコンを入れた際、色を付けるときにdrawableTintを使いたいですが、API23以降なので、minSDKによっては使えません。
その解決法と学びを記します。

# コード

“`kotlin:drawableStart/Endを利用している場合
@BindingAdapter(“drawableTintCompat”)
fun TextView.setDrawableTintCompat(color: Int) {
compoundDrawablesRelative.forEach {
it?.setColorFilter(color, PorterDuff.Mode.SRC_IN)
}
}
“`

“`kotlin:drawableLeft/Rightを利用している場合
@BindingAdapter(“drawableTintCompat”)
fun TextView.setDrawableTintCompat(color: Int) {
compoundDrawables.forEach {

元記事を表示

Mac で Device Monitor を使用するときの注意

ネイティブはもちろん、 Unity で AR の開発とか、実機で確認中にログをモニタリングしたいときに役立つ `Device Monitor` ですが、いざ使うとなると大変だったのでメモ書き

# まずアプリケーションの場所

`/Library/Android/sdk/tools/lib/monitor-x86_64/monitor.app`

深すぎい!

# Java 入れる

8系を入れる。しかも最新だとダメ。動くけどクリックが反応しなかったり。
なので
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html?ssSourceSiteId=otnjp

ここから適当に古いやつを。。。(私は `8u111` での動作を確認しています。)

# まとめ

マイナーバージョンで動かなかった時は自分にアプリケーションを操作する才能がないと勘違いした。

元記事を表示

Android10で画像/動画キャプチャアクションの結果をパブリックディレクトリに保存する

私の開発している Android アプリにおいて、 [MediaStore.ACTION_IMAGE_CAPTURE]() や [MediaStore.ACTION_VIDEO_CAPTURE]() アクションを指定したインテントにより画像や動画を撮影し、パブリックなディレクトリに保存しつつアプリの機能で利用するということをやっていました。

しかしながら [Android10のプライバシー保護のための変更](https://developer.android.com/about/versions/10/privacy?hl=JA) により、利用していた API がことごとく Deprecated になってしまいました。この対応をした時のメモを残します。

## Android 9 まで

### 保存先Uriの決定

[Environment.getExternalStoragePublicDirectory](https://developer.android.com/reference/android/os/Environment#getExternalStoragePublic

元記事を表示

[ Android ] [ localization ] 言語切替4

今回も言語切替について記す。

前回記事でほとんど綴っているので、ポイントのプログラムのみ解説する。
https://qiita.com/QiitaD/items/e26287727e067cd98a1f

##initialize()
以下のようなプログラムを前回のプログラムに加えることで、表示切替ができる。
(変数名は変えているので注意していただきたい)

~~~java
button.setOnClickListener((View view1)->{
Context context2 = MyContextWrapper.wrap(newBase2, newLocale);
//付け加え
if (isLocaleJp(context2)){
newLocale = Locale.ENGLISH;
textView2.setText(“こんに”);
button.setText(“英語表示”);

元記事を表示

AndroidStudioとGitHubの連携方法

次の開発現場ではGitHubでソースコード管理する予定です。

前はGitLabの現場に少しいたけどGitって何?!というレベル。
ワーママ、初めてのKotlinに気を取られてGitの勉強まで手を伸ばせませんでした。。

#AndroidStudioとGitHubの連携方法について勉強します。

##前提条件
①パソコンにgitがインストールされていること
②GitHubのアカウントを持っていること

コマンドプロントを起動してgitと入力

“`

Microsoft Windows [Version 10.0.18362.449]
(c) 2019 Microsoft Corporation. All rights reserved.

C:¥Users¥nanamama>git
‘git’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:¥Users¥nanamama>

“`

⇒PCに入ってなければgitをインストールする。
https://git-scm.com/downloads
(ダウンロードページ)

元記事を表示

Flutter Meetup Tokyo #12 参加報告 #flutter_meetup_tokyo

Flutter Meetup Tokyo #12 ブログ枠に参加させていただいたため、
簡単に概要だけまとめました!
LT15分枠のもののみ一旦感想を入れています。

詳しい内容は資料のリンクをはっているので、そちらをご参照ください!

## Flutter Meetup Tokyo #12
https://flutter-jp.connpass.com/event/147892/

## 開催概要
・共催: Flutter Japan User Group, 株式会社ガイアックス
・日時: 2019年11月7日(木)
・会場: 株式会社ガイアックス 6F Attic

## togetterまとめ
https://togetter.com/li/1427577

# 発表内容

## ①Add Flutter to existing apps
### ・ 発表者: 
 [@neonankiti](https://twitter.com/neonankiti)
### ・ 資料:
 https://scrapbox.io/neonankiti-portfolio/Add_Flutter

元記事を表示

[Android]Android端末をリモートから操作する(scrcpy)

# はじめに

Android開発ではエミュレータで動作確認することも多いですが、
やはり最終的にはAndroid端末の実機で動作確認しますよね。

そのときにリモートで操作できたら便利だよな〜って調べたら、
[scrcpy](https://github.com/Genymobile/scrcpy)を使えば簡単にできることがわかったのでまとめます。

# scrcpy とはなんなのか?

scrcpyは端末の映像表示、操作をUSBまたはTCP/IP経由で行うアプリケーションです。
Windows・Linux・Macで利用できるアプリケーションなので全てのAndroid開発環境で利用できます。

# scrcpy の特徴は何か?
scrcpyですがGitHubのREADMEによると次の特徴があるそうです。
私は特にデバイスに何かインストールする必要がないところが良いなと思いました。
(インストールするのすごく抵抗がありますし…消すの面倒なのでよいですよね…)

– 動作が軽い
– なめらか(30〜60fps)
– 画質が良い(1920×1080)
– 低遅延(35〜70ms)
– 起動

元記事を表示

[Android / Kotlin] ナビゲーションドロワーのつくりかた

どうも。こんばんわ

# なにがあったのか
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409918/05545e12-a4c7-83ae-31b8-7c63a448b994.png)

この画面からナビゲーションドロワーを作成すると前と違ってめっちゃフォルダ・ファイルが作成されるようになった。どゆこと

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409918/1d14c929-e9e5-6c41-90a6-47a5044c4241.png)

しかもbuild.gradleに書き足さないとエラーが出るってなんだよ。

“`
Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper ‘-j

元記事を表示

Android【Jetpack Composeお試し編】

## 概要
「Android Studio 4.0 Canary 1」にてkotlinのコードでUIを構築できる`Jetpack Compose`に対応しました。
実際に公式のチュートリアルやデモを試したのでそのまとめです。

[Android Studio 4.0 ダウンロードページ](https://developer.android.com/studio/preview?hl=ja)
[Jetpack Composeとは](https://developer.android.com/jetpack/compose)
[Use Android Studio with Jetpack Compose](https://developer.android.com/jetpack/compose/setup)
[TUTORIAL Jetpack Compose Basics](https://developer.android.com/jetpack/compose/tutorial)
[Jetpack Compose Basics](https://codelabs.devel

元記事を表示

Androidアプリで、初回のタッチイベントのみ取得できない

#はじめに
htmlを表示するAndroidアプリを扱っていて、
タブレットの再起動直後タップして他画面へ遷移、という動作を行おうとしたところ、
遷移が行われず、2回目のタップで遷移が行われた、ということがあったので、原因を調査しました。
試行錯誤の様子をネチネチ綴ります。

#最初はアプリ上のブラウザにフォーカスがないからかと思った
単純に、初期表示のonLoad時に`$(window).focus`すればいいんじゃない?
と思ってhtml側でを修正してみましたが、
tomcat再起動してタブレットを再起動した1回目はなぜか初回のタップで画面遷移ができるのに、
次再起動したらもう初回のタップで画面遷移ができないという…

ブラウザにフォーカスを当ててもだめ…
ということは画面に表示された部品にフォーカスが当たってたらいいとか?

#動的にアプリ側からフォーカスを置くjavascriptを呼んでみる
androidアプリでhtml上にフォーカスを置くの、どうしたらいいんだろうと検索しまくると、
[ここ](https://stackoverflow.com/questions/5

元記事を表示

[ Android ] [ localization ] ボタンによる言語切替(日英)3(未完)

以前言語切替に関する記事を書いたが、未完であったので続きを書く。

前回、前々回の記事
https://qiita.com/QiitaD/items/bd4199f2b77167ebe4c3
https://qiita.com/QiitaD/items/cd06c029f1ed541c1bab

##はじめに
言語に合わせたフォルダを用意する必要がある。
resにvaluesフォルダ、その下にstrings.xmlがあると思うが
これを英語用フォルダファイルとして使う。
そして**resの下に新たなフォルダvalues-jaを作成し
その下にstrings.xmlを作成し、
日本語用のレイアウトファイルとする**。
このようにすることでAndroidのLocaleとしてセットされている言語の
レイアウトファイルを反映することができる。
![スクリーンショット (92).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/e03490ac-be69-a2b2-245e-a6dfde922244.p

元記事を表示

Kotlinでアプリを作ってみる(TabLayout,ViewPager,Fragment,FragmentPagerAdapter)

次の開発現場が決まりました。なんと、Kotlinでなく大好きなjavaです。笑
Android開発していく上で避けて通れないと思ったのですが、今回は免れました。
なのでKotlinの勉強は長期戦になりそうです。

##タブを押すと画面(Fragment)が切り替わるアプリを作ってみた。
##以下ソースコード
Tabを表示する画面のActivityのソースコード
ViewPagerにtab用のadapterをセットしてtablayoutにセットする
(←この解釈でよいかは不明)

“`CompanyActivity.kt
package com.example.myapplication_kotlin.activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication_kotlin.R
import com.example.myapplication_kotlin.adapter.TabAdapter
import kotl

元記事を表示

【Android】はじめてのDataBinding

[前回の記事:【Android】分かった気になれる!アーキテクチャ・MVVM概説](https://qiita.com/iTakahiro/items/6b1b22efa69e55cea3fa) では
アーキテクチャの概要をコードを記述せずに概念のみ説明してみました。
今後は各ライブラリを実際にコードを書いて導入してみることで
アーキテクチャと各種ライブラリを理解し、身につけていきたいと思っています。

このアーキテクチャシリーズ実践編第一回目として
今回は、Googleが提供するJetPackに含まれるDataBindingライブラリを
実践しながら簡単に説明していきたいと思います。

だらだらと書くのも楽しくないので、
今回は私が愛して止まないアメリカンフットボールのルール・魅力を
間に挟みながらDataBindingを説明していきたいと思います。

気になったワードがあれば、ぜひ調べてみてくださいね

# はじめに
本記事では、DataBindingとLiveDataを用いて添付のGIF画像のような挙動を実装しようと思います。

この画面の特徴は以下の通りです。

– Butto

元記事を表示

[ Android ] Fragment基礎2

前回記事Fragment基礎 https://qiita.com/QiitaD/items/edb3d99ce03cd000b23f
に続き、今回もFragmentについて触れていく。

##前回の補足
前回触れた使いまわしについてよくわからなかったので、調べてみた結果を綴る。
まず例として画面の
左側にボタン群、右側に入力欄群があるプログラムを考える。

![スクリーンショット (80).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/607530a9-329f-a095-ef9e-88e910bcd90a.png)

例えば、これをFragmentで分けると以下になる。

![スクリーンショット (82).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/a97e304a-b5f7-f5e4-6900-c4c2f1d3bce4.png)

上記をファイル名に置き換えると以下のようにできる。
![

元記事を表示

Kotlinとは?~歴史や機能を調べてみた~

# まえがき
Kotlinを使ってAndroidアプリの開発を行っていますが、Kotlinはどういう歴史をたどって現在Androidアプリの開発のメイン言語になったのか気になったのでこの記事を書きました。
きちんと調べたはずですが、間違いなどがあったら是非ご指摘お願いします。

# Kotlinとは何か?
KotlinとはAndroidアプリ開発を行う際に使用するプログラミング言語です。

もともと、Androidの開発言語はJavaでしたがGoogle I/O 2017にて、
正式なAndroidの開発言語になりました。

参考サイト
https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/

そして、Google I/O 2019にて「Kotlinファースト」が強化されたことにより開発において最新のアップデートはKotlinからされるようになりました。

参考サイト
https://android-developers.googleblog.com/2019/05/google-io-2019

元記事を表示

AndroidのTabLayout(Material Design)の文字をカスタムViewを使わずにカスタマイズする

※一部の古いOSバージョン・端末では正しく適用されない場合があるので、それらをサポートしている場合は注意してください。

`com.google.android.material.tabs.TabLayout`の文字装飾(太字にする、色を変える、サイズを変えるなど)はSpannableを使うことで、カスタムViewにしなくてもある程度はカスタマイズできます。Spannableを使うので、テキストの一部だけ文字サイズを変えるなどの装飾をすることもできます。

# すべてのタブの文字をカスタマイズする

すべてのタブで統一した文字装飾を実装する場合は、`PagerAdapter.getPageTitle`をOverrideして`SpannableString`を返すとカスタマイズできます。

“`kotlin
//タブの曜日のテキストだけ小さくする
override fun getPageTitle(position: Int): CharSequence? {
return dates[position].let {
val da

元記事を表示

UnityHub経由でAndroidビルド時に「Unable to detect NDK version」が出た時の解決方法

# 開発環境
**windows**
Windows10

**UnityHub**
Unity2019.2.0f1

**Android端末**
Pixel3

# 起きた現象
Androidビルドしようとした時に「Unable to locate Android NDK」というエラーが出た
![android_ndk.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77637/5428e48e-e0e6-3dfb-463f-e8b2d0eb66c2.png)

「Edit/Preferences…」を開き、External Toolsを見ると
・Android SDK Tools Installed with Unity (recommended)
・Android NDK Tools Installed with Unity (recommended)
の二つがmissingになっていた
確かUnityHubのバージョンを最新にしてください、的なエラー内容だったはず

(以下の画像は解決してしま

元記事を表示

kotlinでのAndroid Studioのエラー

//勝敗を判定
val gameResult={comhand-myHand+3}%3
when(gameResult)
{
0 ->resultLabel.setText(R.string.result_draw)//引き分け
1 ->resultLabel.setText(R.string.result_win) //勝ち
2 ->resultLabel.setText(R.string.result_lose) //負け

}
<エラー>
 Expecting member declaration

書籍に載っていたプログラムをそのまま書いたのですが、上記のようなエラーが出てしまいます。
いろいろ調べたのですが、いまいち解決方法がわかりません。よろしくお願いいたします。

元記事を表示

OTHERカテゴリの最新記事