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

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

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

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

元記事を表示

[ Android ] Fragment基礎

AndroidのFragmentについて記す。

##Fragment
ライフサイクルを持ったビューのこと。
追加削除をしたり、複数の画面を使いまわすことができる。

##実装方法
まずレイアウトファイル(xml)を作成する。
次にFragmentを継承したクラスを作成し、onCreateView()内で
レイアウトファイルをViewとして生成する。
具体的には以下のように書く。

~~~java
public class MainFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
//作成したレイアウトファイルをViewとして作成
return inflater.inflate(

元記事を表示

Flutterウィークリー #82

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#82の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-82

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# アナウンス

### Flutter Interact –日付を保存します
https://events.google.com/flutter-interact/


Flutterチームによる新しいイベント。今回はニューヨークで開催され、全世界に向けて生放送されます。

# 読み物&チュートリアル

### Over the Rainbow –カラーフィルター
https:/

元記事を表示

[Android / Kotlin] 画面回転無効時でもセンサーを使って回転できるようにする

どうも。こんばんわ
今回は画面回転無効(画面固定)のときでも回転できるようにしようと思います。

### そういえばdocomoのFOMAが2026年に終わるみたいですね。
私の初ケータイは4G(XiだっけPremium 4Gだっけ)でしたのでセンター問い合わせはやったことないです。
うまく行けば来年には3G/4G/5Gの3世代の通信規格が出るのかあすげえなあ。

それと今回の話が関係あるかって話ですが、
なんとなく買ったガラホ(SHARPさんのNP601SH / Softbank)ってあれ画面回転しないんですね。
純正のアプリなら行けるけど私は[自作](https://play.google.com/store/apps/details?id=io.github.takusan23.tatimidroid&hl=ja)のアプリで回転させたいの!

# センサー使えばできそう
調べると同じようなことをやりたい人がいましたが何やってるのかまじでわからんかった。
いろいろ調べたんですがドキュメント
https://developer.android.com/guide/topics/sen

元記事を表示

React Nativeのviewpagerで現在のpageの位置を取得する(Androidのみ動作確認済み)

# やりたいこと
ReactNativeのviewpagerで現在のpageの位置(何番目のpageか)を把握。
https://github.com/react-native-community/react-native-viewpager

なぜやりたいかというと、viewpagerがdots(現在の位置が一目でわかる下部にある点)をAndroidではデフォルトでサポートしていなかったので自作しようとしたからです。

# 実装まで
ドキュメントを読んだところ
onPageSelected
というPropが使えそうと思ったので試しました。
ただ、トップページには使用例がないので、サンプルを確認
https://github.com/react-native-community/react-native-viewpager/blob/master/example/ViewPagerExample.js

大抵ReactNativeのライブラリにはexampleのファイルがあります。

# 実装
簡素化しています。

“`javascript
import ViewPager fro

元記事を表示

【Kotlin】ギャラリーから画像を選択して、ImageViewに表示する

公式サイトを参考に、ストレージ アクセス フレームワーク(SAF)を使用する。
[ストレージ アクセス フレームワークを使用してファイルを開く  |  Android Developers](https://developer.android.com/guide/topics/providers/document-provider?hl=ja)

コードはGitHubに載せています。
https://github.com/orimomo/picture-frame-app/tree/master

# 1. ギャラリーを表示する

## コードと解説
“`kotlin
private fun selectPhoto() {
val intent = Intent(Intent.ACTION_OPEN

元記事を表示

Android Studio 4.0 新機能 (Canary 1)

# はじめに

[Android Studio 4.0 Canary 1](https://developer.android.com/studio/preview) が出たので、個人的に気になった新機能をまとめました。
マサカリ(こっそり)お待ちしてます :hocho:

– 参考
– [Android Studio 4.0 Canary 1 available](https://androidstudio.googleblog.com/2019/10/android-studio-40-canary-1-available.html)
– [What’s New in Android Studio (Android Dev Summit ’19)](https://youtu.be/XPMrnR1_Biw)

# Jetpack Compose のサポート
Jetpack Compose に対応しました!!
IDE上でプレビューを見ることができるので、確認しながらサクサク書けます。

Jetpack Composeって?? という方は[こちら](https://develo

元記事を表示

Android端末からMacのlocalhostに接続する際に苦戦した件

# やりたいこと
Android端末からMac Book Airのlocalhostにアクセスしたい。

Mac Book AirでWebページを開発中。Android端末とMac Book AirをUSB接続し、AndroidのChromeにて、http://localhost … とアクセスするとlocalhostにアクセスできる状態にする。

# 環境

“`
Mac OS: Mac OS 10.14.3
Android: バージョン7.0
端末機種: FTJ162D
“`

# 苦戦した箇所
USBケーブル不良でAndroid端末を認識しなかったのが要因であった。
どういう場合に、USBケーブル不良を疑うべきか記録する。

# 実施したこと

### Mac Book AirがAndroid端末を認識しているか知りたい

1. [Android File Transfer](https://www.android.com/filetransfer/) をインストール

2. `Android File Transferを起動。

3. 以下の画面が表示された場合、Mac

元記事を表示

WebView で forceDark を設定した時のメモ

Android の WebView で forceDark を適用するのに調査したので、メモとして残します。

WebView で forceDark を使う場面自体少ないかと思いますが、WebView で表示させてるプライバシーポリシーやライセンスの画面を黒くするために調査しました。

## Light テーマの場合

`Theme.AppCompat.Light` など DayNight テーマを使用していない場合はアプリのテーマに `android:forceDarkAllowed=”true”` を追加することで WebView を強制的に黒くさせることができます。

この方法の場合はアプリのテーマで強制的に色を黒くさせるため、必要な画面のみ適用させる必要があります。

## DayNight テーマの場合

デフォルトではテーマなどの `forceDarkAllowed` を参照して黒にするかを切り替えるようになっていますが、 DayNight テーマを使用している場合は `forceDarkAllowed` が適用されないため、`WebSettin

元記事を表示

[Android] Disk Fullって怖いよね

Androidでは、基本的にシステムもアプリも永続的データは`/data`パーティションに書き込む。

そのため、システムの最低限の動作が継続できるように、アプリがデータを書きすぎないための仕組みがいくつか入っている。

本記事では、それらの仕組みについて紹介する。

なお、ソースコードは下記のバージョンを参照している。
– Android: android-10.0.0_r5
– Linux kernel: 5.3.7
– e2fsprogs: 1.45.4

# 1. ストレージの空き容量を確認するAPI

## `File#getTotalSpace()`, `File#getFreeSpace()`, `File#getUsableSpace()`

いずれも最終的にはJNIで`statvfs(3)`を、すなわち`statfs(2)`を呼び出す。

`File#getTotalSpace()`は`statfs.f_blocks * statfs.f_bsize`に相当し、パーティションの全サイズを返す。
`df /data`したときの`1K-blocks`と一致する。

`Fi

元記事を表示

[Android]初歩的なログの制御を理解しよう

# はじめに

Androidではandroid.util.Logを使うことでLogcatにログを出力できます。
LogcatとはAndroid Studioに表示されている次のウィンドウのことです。

android.util.Logは簡単に使えるのでなんとなく仕様を理解しているそんな方も多いと思います。
筆者もその一人なのですがログの仕組みを理解してよいログを書けるように知識をまとめたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/7272b175-ac20-d8ec-c03f-607c6612619c.png)

# どうやったらログを出力できるのか?

まずはログをどうやったら出力できるのかというところだと思います。
android.util.Logでは次の2種類の方法でログを出力できます。

## (1) ログレベルごとに定義される関数を利用する

次のようにLogでは各レベルのログを出力するための関数が用意されていて
簡単に特定のレベルのログを出力

元記事を表示

【独学】React Nativeを初心者が学習してみた part1

# はじめに
筆者のプログラミング学習歴は独学で5ヶ月ほど。
普段はRuby on Rails5を学習している初学者の私が、面白そうなのでReact Nativeを学習してみることにした。
iOSアプリ作ってみたいし、ついでにReactも学べばRailsで作ったWebサービスのフロントエンドが充実するかもしれない!といった安直な考えだけで学習を始めてしまったのだが、本当にこれで良かったのか…。
その答えはいずれ私がReact,React Nativeを習得した時にわかるだろう。

# React Nativeとは何か
[公式サイト](https://facebook.github.io/react-native/)や様々なqiitaの記事を読み漁ったが、[こちらの記事](https://qiita.com/Iwark/items/7c27e919bb71f8b256f6)にわかりやすくまとめられていた。
要は、React NativeはReactをモバイルでも使えるようにしたもの。
そしてそのReactはJavaScriptのフレームワークということ。
現時点ではこの程度しか理解で

元記事を表示

Android/iOSアプリのアーキテクチャ検討

# はじめに
アプリのアーキテクチャというと、僕が一番はじめに思い浮かぶのはMVCとかMVP、Fluxみたいな
今回のアプリでどのパターンを採用するかという点です。
ただ、現場でそのパターンだけ考えれば良いかというとそれ以外の部分に対しても
もっと検討することが多くて、何を検討するかがまとまっていないことが多いので、
自分の備忘録としてまとめてみることにしました。

# お題
・アプリが起動したらQiitaの記事の一覧を表示できる
・記事をタップしたら、Webのページで記事の内容を閲覧できる
・どの記事を見たのか、履歴を確認できる
・どんな記事を見たのか集計して、アプリの改善に使いたい
・(簡単にするため、認証はなし)

というQiita閲覧アプリで考えてみます

# 要素を分解してみる
> アプリが起動したらQiitaの記事の一覧を表示できるアプリ

QiitaのAPIを使った通信が必要。
https://qiita.com/api/v2/docs#投稿

APIはJSONなので、JSONを解析できるライブラリがあると楽そう。
リスト表示であれば、標準コンポーネントで十分。

> ・

元記事を表示

Kotlin resの話

# KotlinでのAndroidアプリ開発
参考文献
[App resource overview | Android Developers](https://developer.android.com/guide/topics/resources/providing-resources)

## res(リソース)ディレクトリの話

プロジェクト作成時に生成されるresディレクトリとその中身

– res
– drawable
– layout
– mipmap
– values

他にもmenu, fontなどのリソースディレクトリがresディレクトリ内でサポートされている.しかし,menuなどのリソースディレクトリを活用したい場合は自分で作成する必要がある.

### drawableについて
一般的に,画面上に描画するグラフィックを保持.
.png, .jpg, .gifなど.

### layoutについて
ユーザーインターフェース(UI)のレイアウトを定義するXMLファイルを保持.

### mipmapについて
さまざまなランチャーアイコ

元記事を表示

Android Studio 3.5.1でSync Project with Gradle Filesが見つからない件

# 結論
ありました。
File -> Sync Project with Gradle Files
![sync.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85631/73acb547-850e-6d69-280b-eb8818b6ad92.png)

# ヘルプなどが改善されてなかった

[Android Gradle プラグインのリリースノート|Android Gradle プラグインのアップデート](https://developer.android.com/studio/releases/gradle-plugin?hl=ja#updating-plugin)

>Android Studio のメニューバーから [Tools] > [Android] > [Sync Project with Gradle Files] をクリックします。

ないし
![sync2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

【Flutter】 アプリ開発入門 Hello Flutter!!

# この記事で紹介すること

FlutterのSDKインストールから、Hello Flutterアプリ開発までを紹介

1. FlutterSDKインストール
2. Android Studio にFlutterプラグインのインストール
3. Android Studio にDartプラグインのインストール
4. Hello Flutterアプリ起動

※私自身すでに、Xcode、Android Studioはインストール済みでしたので、そちらはインストールを済ませておいてください。

# Flutterとは

[Flutter](https://flutter.dev/)は、Googleによって開発されたモバイルアプリケーションSDK

↓↓↓公式サイトから引用↓↓↓

“`
Flutter allows you to build beautiful native apps on iOS and Android from a single codebase.
(Google翻訳: Flutterを使うと、iOSとAndroid上で単一のコードベースから美しいネイティブアプリケーショ

元記事を表示

今の時代はAPKをコマンドで署名するなら、jarsignerではなくapksignerを使う

# あらすじ

現場ではAndroid TVの開発をやっているのですが、シェルスクリプトで署名済みのAPKを作ろうとした時に、jarsignerだとエラーが出るなどしてうまくいかなかったので、色々調べてみました。

# jarsignerで署名ができないパターン

どうやらAndroid 7.0以上ではできないらしい。
[Android 7.0 以上では jarsigner ではなく apksigner で署名する | メモ帳](https://egg616.com/%E6%8A%80%E8%A1%93%E3%83%A1%E3%83%A2/post-121/)

公式のページを見ても、apksignerについてのみ記載されていた。
[apksigner  |  Android Developers](https://developer.android.com/studio/command-line/apksigner?hl=ja)

# 事前準備

Android SDK Build Tools のリビジョン 24.0.3 以上で利用可能です。
事前にパスを通してお

元記事を表示

(非Root) Android版LINEが溜め込んでいる画像を削除する

#スマホのストレージをLINEが圧迫している
今や日常のコミュニケーションツールとなったLINEですが長年使用しているとストレージをとんでもなく圧迫しますよね.私のXperia X Performanceの場合,LINEだけで5GB近くストレージを占有しています.本体ストレージが32GBでシステム領域がその半分ですから,如何にLINEが肥大化しているかがお分かりいただけると思います.
![Screenshot_20191103-104004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501664/2a52763f-23cf-7251-d226-1910a6d6d010.png)

そんなLINEですが,主な保存ファイルは画像・動画のようです.そしてこれらはLINEの設定画面等から個別に削除することができません.(トーク丸ごと削除はできますが,画像だけ消して軽くしたいですよね)

※※ここから先はAndroid(LINE)のシステム領域へちょ