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

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

【コピペで動く】Android KotlinでNotificationから任意のURLを起動

こんにちは。Tommyと申します。

今回はAndroid KotlinにてOS通知(Notification)から任意のURLを起動させてみました。

##環境
・AndroidStudio 4.1
・Kotlin 1.4.10

##実装したこと
AndroidOSに搭載されている通知機能を使用して以下のように「通知をタップ」→「URL起動」を実装しました。


ボタンを押すと通知が表示されるのでタップすると、、、

Qiitaのトップ画面へ飛ばすことができました。
これでデ

元記事を表示

path_providerをAndroidで利用するとエラーが発生してしまう

Flutterにおけるストレージのパス取得のためのプラグイン`path_proivder`がAndroidで動作しない問題でハマったので解決策をメモしておきます。

# 事象

[path_providerプラグイン](https://pub.dev/packages/path_provider)の`getTemporaryDirectory()`などのメソッドをAndroidで実行すると、以下の例外が発生していました。

“`shell
MissingPluginException(No implementation found for method getTemporaryDirectory on channel plugins.flutter.io/path_provider)
“`

# 解決策

該当プロジェクトでは、ネイティブのUIをそのまま組み込むことができる**PlatformViewを利用**していますが、AndroidのネイティブコードにおけるPlatformViewを登録する場所で、**overrideしたメソッドの親メソッドを呼び出していない**ことが原因で

元記事を表示

#37 Kotlin Koans Builders/String and map builders 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Builders/String and map buildersの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 StringBuilderを用いた文字列の連結

Kotlinにおける文字列の連結方法の1つに[StringBuilder](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-string-builder/)インスタンスを用いる方法があります。

以下の手順で利用します。

1. **StringBuilder**インスタンスを生成する。
2. StringBuilderインスタンスが**append()**を呼び出して、引数として連結したい文字列を渡す。
3. StringBuilderインスタンスが**

元記事を表示

【Android】SpinnerをXmlのみで初期選択値を決める【Databinding&BindingAdapter】

Android 開発において、Spinnerというものがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520701/3f5316cb-3a5f-3a19-b6f4-e972d5349a71.png)

Webでは`select`が挙げられると思われます。

selectでは、option要素にて、

“`

“`
`selected`を指定すれば、自動でサンプル3に選択されますが、

Androidの場合、初期値をXmlで指定することができなさそうでした。(もしあったら教えてほしい(´;ω;`))

ゆえに何を使うかと調べたところ、

“`kotlin:Acti

元記事を表示

【Android/Java】Fragmentに戻るボタンを設置する

## はじめに
フラグメントでの戻るボタンの設置において、
親Activity内で定義して呼び出す書き方にしていたのですが、
Activityに置かずに各Fragmentから直接中身を呼び出すほうがいい
と、ベテランエンジニアから指摘をいただいたので備忘録として両パターン残しておきます。

## ①MainActivityから呼び出す方法
“`java:MainActivity.java
public class MainActivity extends AppCompatActivity {

// 戻るボタンを定義
public void setupBackButton(boolean enableBackButton) {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(enableBackButton);
}
}
“`

“`java:Fragment1.java
// onCreateView内で呼び出す

元記事を表示

TargetSDK29 対象範囲別ストレージ対応

# はじめに
2020/11/2から、AndroidアプリのアップデートにはTargetSDK29が必須になりました。
TargetSDK29対応の一つに対象範囲別ストレージというものがあり、ファイルへのアクセスが厳格化されました。
この対応の際にAndroidのファイルシステムや具体的な対応方法に苦労したので、知見を共有しておきます。
コード例はすべて画像を対象にしたものです。保存したいファイルに応じて、適宜読み替えてください。

対象範囲別ストレージについての公式の説明はこちら:
https://developer.android.com/training/data-storage/files/external-scoped?hl=ja

# 対応方針
具体的な対応方法に入る前に、まずはファイルの保存先について見直しましょう。
保存先が外部領域か内部領域か、アプリ専用領域か公開領域かで色々と異なります。

| | 外部かつアプリ専用領域 | 外部かつ公開領域 | 内部かつアプリ専用領域 |
|:-:|:-:|:-:|:-:|
| アプリ削除時にファイルが | 消える | 消え

元記事を表示

【React Native】生成したreact-nativeプロジェクトがiOSで起動できなかった件

# はじめに
React Nativeを試してみようとインストールしてみたものの、生成したreact-nativeプロジェクトがiOSで正しく動かなかったので、その対処メモ。

# 実行環境
– Xcode 12.1
– Android Sudio 3.2.1
– macOS Catalina(10.15.7)

#React Nativeのインストール
環境設定は、記事に日付も新しいので[こちらのサイト](https://dev-yakuza.github.io/react-native/install-on-mac/)を参考にしながら行いました。

※私の環境には、Homebrew、Nodejs、Xcode、Cocoapods、Android Studioは導入済みなのでインストールしていません。

1.Watchmanのインストール

“`Swift:
brew install watchman
“`

2.React Native CLIのインストール

“`Swift:
npm install -g react-native-cli
“`

3.JDK(Java De

元記事を表示

iOS/Android の OS のシェア率を比較するのに StatCounter というサイトがかなり便利な件

# はじめに
>**[StatCounter](https://gs.statcounter.com/os-market-share/mobile/)**
>Tracks the Usage Share of Search Engines, Browsers and Operating Systems including Mobile from over 10 billion monthly page views.

StatCounter は モバイルを含む、検索エンジン、ブラウザ、OSの使用シェアの統計データを集計するサイトのことです。

iOS/Android の OS のシェア率の比較などを確認するときに、操作が直感的でとても役にたったので共有します。

よく使いそうなグラフをサンプルとして添付します。(2020/11/08のデータ)

# 使い方

「Edit Chart Date」 をクリックする。

![スクリーンショット 2020-11-08 11.43.25.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

Android 日付を取得する方法

Androidで日付を取得する方法を記録します。
思ったよりも簡単に書けました。

fun getToday(): String {

//表示させたい型を決める。 yは年、Mは月、dは日。
//単位は自由に決められる。例えば、”yyyy/MM/dd”でもOK。
val sdf = android.icu.text.SimpleDateFormat(“yyyy年MM月dd日”, Locale.JAPAN)

//date型のインスタンスを作る。
val date = Date()

return sdf.format(date)
}

以上です。

元記事を表示

Androidでmoduleを作りアプリ側から読み込む方法

# はじめに
共通で使えるライブラリやSDKとして他の人に使ってもらうためにmoduleを作る方法を簡単にメモします。
基本的にcommon的なapiの公開やよくあるview系のライブラリ化もこの手順でできます。
今回は簡単なメソッドを一つ作りアプリ側から読み込む方法を残します。

# ライブラリの組み込み公式ページ
https://developer.android.com/studio/projects/android-library?hl=ja

# moduleの作り方

AndroidStudioでこうして
![スクリーンショット 2020-11-07 23.06.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109862/3aac94e1-edb4-7926-b9b9-711d7b798939.png)

こうして
![スクリーンショット 2020-11-07 23.06.32.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

#36 Kotlin Koans Builders/Function literals with reciever 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Builders/Function literals with recieverの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 レシーバー

まず実際の例を見てみましょう。

“`kotlin:Example
val sum: Int.(Int) -> Int = { other -> plus(other) }
“`

上の例の1番左側の`Int`を**レシーバー**とよびます。
(左から2番目の`Int`は**引数の型**、左から3番目の`Int`は**戻り値の型**を表します。)

つまり、

レシーバーは**関数型(function types)の呼び出しもとのインスタンスの型を指定します。**

#3 Builders/Function literals with re

元記事を表示

【Android】【初心者】画像ロードライブラリ Coil 使ってみた

# 【Android】【初心者向け】画像ロードライブラリ Coil 使ってみた

## Coilとは
Androidの画像ロードライブラリです。
GlideやPicassoなどがよく使われているのかなと思いますが、CoilはKotlin firstであるのと、Kotlin Coroutineを利用したものであるというのが特徴かなと思います。

## 実装手順
### 依存関係の追加

“` build.gradle(app)
dependencies {
implementation(“io.coil-kt:coil:1.0.0”)
}
“`

* 詰まったこと
coilは、java8でないといけないみたいで、以下のようなエラーが出ました。

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

* 対処法

jvm tar

元記事を表示

AndroidでJNetHackをプレイしたいのです!!

#はじめに
Qiitaに投稿してよいのかどうか迷いましたが、
毎回お世話になっておりますので、投稿することにしました。
初めての投稿になりますので、色々と見づらいとかおかしな所があったりするかもしれませんが指摘くだされば訂正していきたいと思います。

今回、手持ちのスマートフォンを新しい機種へ変更したので、
内部ストレージに余裕が出来ました。
で、度々訪れるJNetHackをプレイしたい欲求が湧いてきました。
5年位前にもアンドロイドにインストールしましたが、その時よりすごく簡単に
インストールする事が出来て幸せです。
##準備

[Termux](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiE2tre-O_sAhXa62EKHSj5AnwQFjAAegQIBxAC&url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.termux%26hl%3Dja%26gl%3D

元記事を表示

制限対象の非SDKインターフェースの使用をLogcatで調査する

## はじめに
2020年11月2日以降、 AndroidアプリのアップデートはAndroid10(APIレベル29)以上を対象にしなければなりません。
Android10にはアプリに影響を与える可能性のある動作変更点あると[公式ドキュメント](https://developer.android.com/about/versions/10/behavior-changes-10?hl=ja#non-sdk-restrictions)に書かれています。
その動作変更点のひとつに、**非SDKインターフェースに対する制限の更新**があります。
開発しているアプリが、制限されている非SDKインターフェースを使用していないか調査する必要があります。
そこで、この記事では制限対象の非SDKインターフェースの使用をLogcatで調査する方法について紹介します。

## 前提
### 開発環境
– Language:React Native
– PC OS:Mac OS Catarina 10.15.7
– Android OS:9, 10
– Java:Oracle Java 12

### 非S

元記事を表示

SDLデバイスシミュレータを触ってみた

アスキーのラズパイによる疑似SDL車載機に、地図を表示してみよう!の記事を読んでみて実際に動かすための機器がそろっていたのと、
実際にデバイスシミュレータに触ってみての開発時になんかの役に立ちそうなことを一応書いておく

#実際に必要な機器、ソフト
理由は後述
PC[windows,MacどちらでもOK]×2
Raspberry Pi 3
SDLBOOTCAMPのイメージファイル
マイクロSDカード
Android6以降の実機端末A
Raspberry Pi純正7インチタッチディスプレイ
USBケーブルmicroBと使用するandroid端末用のUSBケーブル
Andoroid Studio

###要る物の説明

PCに関しては、ログファイルをSDLBOOTCAMPをインストールしたラズパイから取得する際にもう一台あると楽だと思う。
あと、ラズパイ側のLANポートは動作していない模様

“`
root@raspberrypi3:~# ip addr
1: lo: mtu 65536 qdisc noqueue qlen 1000

元記事を表示

Fragmentでのイベント取得方法【Kotlin】

今回は、KotlinでFragmentでのイベント取得の方法についてまとめていきたいと思います。

私自身、AndroidについてJavaから始めたので、Javaと同じように実装したらエラーが発生してしまい、とても悩んでしまいました。

## Javaでの実装について
Fragment上にボタンを配置し、それがタップされたときのイベントを取得するコードを例とします。

“`Fragment.java
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

/**
* Viewの処理とかある想定
*/
view.findViewById(R.id.button).setOnClickListener(new View.OnClickList

元記事を表示

【Android / Kotlin】Toolbar と戻るボタンを実装

# はじめに
Kotlin で開発をしていてツールバーを実装したい場面があった。
難しいことはほとんどないのだが、地味につまずいた箇所があったので備忘録としても記事として残す。

※ Support Libraryは AndroidX を採用

# 学習のために作成したサンプルアプリ概要
アクティビティにツールバーと戻るボタンを設置して、戻るボタンを押すとアクティビティを終了するという、全く実用性のないツールバーを学ぶためだけに実装したアプリ。

# 実装

念のためbuild.gradleの内容も載せておく

### build.gradle

“`build.gradle
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android

元記事を表示

HMS Map Kit Android SDKの導入方法について

#1. 概要
HMS Map KitはHMSの地図サービスであり、現時点では以下の5つのサービスを提供しています。

1. [Android SDK](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-v4-abouttheservice)
2. [JavaScript API](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-js-about-the-service)
3. [Web API](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-directions-api)
4. [React Native SDK](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/hms-map-v4-abou

元記事を表示

[Android]Androidアプリ側で何かしらのライブラリを読み込むとコンフリクトバージョンエラーが発生する理由

# はじめに

Androidで開発をしていて、よくある問題として何かしらのライブラリをgradleで読み込み実行すると、kotlinのバージョンンコンフリクト系のエラーが発生する場合がある。ので見解

ちょっと調べたのでメモ程度に残しておきます

# 原因

いろいろな理由があるのかも知れないが、まずライブラリのkotlinのバージョンとコンフリクトを起こしている場合に起きえます。
その場合は、そもそもライブラリを使うのを諦めるか、ライブラリのバージョンを古いものを使ってみるか、ライブラリを組み込むアプリのkotlinバージョンをアップしてみるかなどよくわからずに適当に試行錯誤して解決することが多いです。

## kotlinライブラリのコンフリクト
kotlinのライブラリを読み込むとkotlinのライブラリがアプリ側に読み込まれます。
その分apkのサイズとメソッド数は増加します。multi dexが必要かも。

アプリ側に読み込まれたkotlinライブラリとアプリ側のkotlinのバージョンでコンフリクトが起きる場合があるようです。
gradleの使用は下記を参考ください。ko

元記事を表示

OracleのJava Development Kitが有償化したが、引き続きAndroid Studioは無料で使えるのか?

Android Studioはデフォルトで無料のOpenJDKを使用しているため、無料で使用可能。
有償化したのはOracleJDK。
非商用、非本番利用であれば、OracleJDKも無料使用可能。

元記事を表示

OTHERカテゴリの最新記事