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

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

備忘録: 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

元記事を表示

Xamarin.Forms URI指定でImageが表示できなかった

Microsoft公式の[Image のチュートリアル](https://docs.microsoft.com/ja-jp/xamarin/get-started/tutorials/image/?tabs=vswin)で詰まってしまった
Android端末で実機デバッグしてます

# エラーメッセージ
[0:] ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri: http://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_(Serengeti%2C_2009).jpg/200px-Papio_anubis_(Serengeti%2C_2009).jpg

# やったこと
### ①HttpClient・SSL/TLS の設定変更
[参考記事](https://doumer.me/resolve-image-loading-error-in-xamarin-forms/)

ソリューション

元記事を表示

【Kotlin】下層のViewのタップイベントを拾ってしまう

androidではタップ時、タップ可能なViewがないと下層のViewのイベントを拾ってしまうそう

なので表示されてるfragmentのConstraintLayoutやRelativeLayoutに

“`kotlin
android:clickable=”true”
“`

を記述してタップ可能にしてやると解決

元記事を表示

[ Android ] サーバから取得した値をsetterでアクティビティに引き渡す

今回はサーバから取得した値をアクティビティに引き渡す方法を記す。

##setter()
セッターというメソッドを作れば簡単に実装できる。
取得値を引き渡したいクラスに、引き渡し用の変数を作り、セッターメソッドでその変数に代入すれば完成である。
具体的には以下のように実装する。

MainActivity.java

~~~java
public class MainActivity extends Activity {
private String serverValue = null;

public void onCreate(Bundle state) {
//…
new MyAsync(this).execute();
}

public void setList(String serverValue) {
this.serverValue = serverValue;
}
}
~~~

MyAsync.java

~~~java
public class MyAsync ex

元記事を表示

AndroidプロジェクトでGitHub Actionsのcacheを利用しようとしたが出来なかったメモ

# 概要
– GitHub Actionsでcacheが利用できるようになった。
– https://qiita.com/ngmr_mo/items/0576bfcea8c4487a6b47
– [Caching dependencies to speed up workflows](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)
– cacheを利用するには[actions/cacheを使用する](https://github.com/actions/cache)

# Androidプロジェクトでどうcacheを利用するか?

– chache対象のディレクトリ/ファイルはなにか?
– `.gradle`
– CircleCIの設定を参考にhashを計算してそれをkeyにする。

“`yml
– name: cache gradle
id: cache-g

元記事を表示

Google Play Developer APIの旧バージョンに関する警告

問題に関する情報がなかったので苦戦しましたが、問題が本日付けで解決したので一応報告を兼ねて掲載します。

##症状##

Google Play Consoleにて以下の警告が発生。

「アプリで古いバージョンのGoogle Play Developer APIを使用していることがわかりました。2019年12月1日以降、このAPIのバージョン1および2は使用できなくなります。それまでにバージョン3にアップグレードしてください。」

##前提##

・Microsoft VisualStudio2017のXamarinにて作成したアプリ。
・GooglePlayに5本ほど公開しているが1本のアプリのみで上記警告がでている。(他のアプリでも一時期は表示されていたがしばらくすると表示されなくなった。)
・Google Play Developer APIはGoogle Play Consoleにリンクしているが使用している形跡がない。(意図的には使用していない)

##解決策##

まずGoogleに問い合わせメールを送りテンプレと思わしき以下の回答をもらいました。

>今回のアラートは、

元記事を表示

Androidエミュレーターでadb remountしようとしてもfailする場合

## adb remountを実行するとfailする

この記事に従ってhostsを書き換えようと思ったが出来なかった。

https://qiita.com/devnokiyo/items/5388169f798bd2678d64

## 解決策

最初から入ってるエミュレーター`Nexus_5X_API_29_x86`では頑張っても無理でした。
Android Studioから新しいエミュレーター`Nexus_6P_API_27`をインストールしてリトライしたらあっさり解決。

“`
$ emulator -list-avds
Nexus_5X_API_29_x86 // NG
Nexus_6P_API_27 // OK
“`

元記事を表示

ANDROID STUDIO KOTLIN ERROR : 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

ENVIRONMENT
 - AndroidStudio3.5.2 アンドロイドスタジオ
 - KOTLIN コトリン
 - MinRequirementAPI lolipop22 /TestMachine Nexus6

ERROR Contents エラー内容

“`
: 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
“`

新規にプロジェクトを構成し適当なテンプレートを選択してビルドすると上記エラーが出る場合があります。以下2ステップでエラーを解消できます。

#STEP1 ターゲットJVMを1.8に変更します。

「ファイル」「設定」「Kotlinコンパイラー」を選択し、ターゲットJVMバージョンを1.6から1.8へ変更します。

![0132.png](https://qiita-image-store.s3.ap-northe

元記事を表示

twrpを自分でビルドしてみた

# きっかけ
いつも通りtwrpを使っていたときにふと普段見てなかったスプラッシュ画面を見て気がついた

**これよく見たら別端末用じゃん**

※実話です

Ulefone Armor 5のtwrpのつもりで使ってたら
Ulefone **Power** 5のtwrpだったんです。
でもどれだけ探してもArmor 5向けのtwrpは見つからなかった自分でビルドすることにしました。

# で、どうやって?

## 神ツール発見
githubで”twrp build”みたいな単語を調べてたらすごい便利なツールを見つけたので今回はそれを使いました。

https://github.com/TwrpBuilder/twrpbuilder_tree_generator

これです。
twrp用にデバイスツリーを生成してくれるすごいツールです(語彙力
使い方もすごくかんたんで、適当な方法でrootを取りターミナルアプリをインストールし、ddでリカバリっぽいパーティションを取ってきて

“`bash
java -jar TwrpBuilder-1.0-SNAPSHOT.jar -r <ファイル名

元記事を表示

【AndroidStudio】Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

以下の記事の続きです。(自分的に)

– [【AndroidStudio】ERROR: Failed to install the following Android SDK packages as some licences have not been accepted.](https://qiita.com/yamahei/items/499ef3d39b275b108ffe)

AndroidStudioでエミュレータを使ってAndroidアプリをローカル起動しようとした(Run ‘app’)ところ、以下のエラー。

“`
Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
“`

環境変数がない。
確認したらない(当たり前か

“`
C:\Users\ORE>set ANDROID_SDK_ROOT
環境変数 ANDROID_SDK_ROOT が定義されていません
“`

AndroidStudio入れる前にXamarinでAndroidアプリ作ってたのがいけなかったの

元記事を表示

【AndroidStudio】ERROR: Failed to install the following Android SDK packages as some licences have not been accepted.

Windows10にAndroidStudio(3.5.2)をインストール。
gitからプロジェクトをclone。
Make Projectしたら以下のエラー。

“`bat
ERROR: Failed to install the following Android SDK packages as some licences have not been accepted.
platforms;android-27 Android SDK Platform 27
build-tools;28.0.3 Android SDK Build-Tools 28.0.3
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to anoth

元記事を表示

【Androidアプリ入門】音声入力と時刻出力で遊んでみた♪

スマホアプリは難しいのかなと思っていたのでこれまでやらずにいたが、やってみると、
たかだか始めてから3日目ですが、なんとなく面白いので記事にしておこうと思う。

動機としては、先日の会話アプリの出来がいいので、ぜひみんなにも試してほしいのだが、スタンドアローンだとどうも反応がわからないので、スマホアプリにして音声で会話アプリまで作りたいということで、自信ないけど始めてみました。

始めて初日は、悪戦苦闘。。。ネットで探したアプリをベタ打ちで動かそうとしましたが、エラーだらけで一向に動きません。
ということで、一冊買って始めました。
初日は、ビジュアルスタジオインストールしてネットアプリを試して終わりました。
二日目は、以下の本の部品を画面に並べて実機で表示させて終わり。
今日は、三日目です。
[基礎&応用力をしっかり育成!Androidアプリ開発の教科書 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS) 単行本(ソフトカバー) – 2019/7/10
WINGSプロジェクト 齊藤 新三 (著), 山田 祥寛 (監修)](https:

元記事を表示

ServiceからDialogを出す

1.
方法1:Dialogを使わない、自分はWindowManager.addViewの方法でViewを出す。
方法2:どうしてもカスタマイズDialog(AOSP Dialogを継承)を出す場合、
以下の一行のソースを追加したらできます
Dialog.show()を呼ぶ前に
getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
追加する

2.ServiceでWindowManager.addViewを使う時、以下のエラーが出る。
Can’t create handler inside thread that has not called Looper prepare

対応方法:
final Handler handler = new Handler(Looper.getMainLooper());
       handler.post(new Runnable(){
         @Override
         public void run (){
          /

元記事を表示

UnityからAndroidビルドまで(2019.11)

## 前置き
UnityでAndroidにアプリをビルドする必要があったので、
いろいろ調べながらやりました。

## 環境
・Unity2018.3.14f1
・Android Build Supportはなし
・Unity Hub 2.1.3

##必要なもの
・Android Build Support
・Android SDK,JDK,NDK

##Android Build Support
まずこれが必要。
Unityをインストールするときにチェックを入れていればインストールされている。

確認方法はFile>Build Settings>Platform>Androidでこのような画面が出ればOK。
ない場合はNo Android module loaded.と表示され
Open Download Pageというボタンが表示されているはず。

Unity HubでUnityをインストールした人は
インストール>「︙」>モジュールを加える>
Android Build Supportにチェックを入れる>実行
でインストールできる。

## Android SDK,JDK,N

元記事を表示

【Android/Kotlin】UIまとめ

## 目次
1. パスワード非表示
2. addTextChangedListenerの書き換え
3. enum書き換え

## 1. パスワード非表示
![undefined]()

– java

“`MainActivity.java
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
“`
– kotlin

“`activity_main.xml

“`
## 2. addTextChangedListenerの書き換え
– java

“`MainActivity.ja

元記事を表示

Looper

Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。

(2) Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。) Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。

(2) 通常是通过Handler对象来与Looper进行交互的。Handler可看做是Looper的一个接口,用来向指定的Looper发送消息及定义处理方法。 默认情况下Handler会与其被定义时所在线程的Looper绑定,比如,Handler在主线程中定义,那么它是与主线程的Looper绑定。 mainHandler = new Handler() 等价于new Handler(Looper.myLooper()). Looper.myLooper

元記事を表示

[ Android ] 画面遷移時のデータのやり取り

今回は画面遷移時にどのようにしてデータをやり取りするかについて記す。

以前の記事https://qiita.com/QiitaD/items/1495f2f9839fe8706d31
で画面遷移の実装方法について記しているが、データのやり取りでもIntentを使う。

##データを引き渡たし
Intentを生成した後putExtraメソッドを使えば、引き渡すことができる。
このメソッドにはkeyとvalueを指定する。

~~~java
Intent intent = new Intent(getApplication(), SubActivity.class);
//intent.putExtra(key,value);
intent.putExtra(“EXTRA_DATA”, data1);
startActivity(intent);
~~~

これで渡すことができる。

##データの受け取り
受け取るときはgetStringExtra(key)で受け取ることができる。
具体的には以下のように実装する。

~~~java
Intent intent = getIntent()

元記事を表示

ionicでadmobを使用する

# IonicでAdmobを使用する

Ionicを使用してクロスプラットフォームのアプリを開発したし、折角なので、収益化をしたいという方のための記事です。(私はAngularベースで開発をしていますので、他のVue等では異なる可能性がございます。)

色々なドキュメントで書かれていることが違い、時間を消費してしまったので、まとめてみます。
もしかすると、不要な記述もあるかもしれませんので、コメントなどで、教えていただけると幸いです。

## 手順
1. Admobに登録し、アプリIDを取得する。
簡単ですので、以下のヘルプを参考に登録してください。
https://support.google.com/admob/answer/7356219?hl=ja

1. プラグインのインストールをする。
https://github.com/ratson/cordova-plugin-admob-free
に従い、Install する。

“`sh
cordova plugin add cordova-plugin-admob-free –save –variable ADMOB_AP

元記事を表示

OTHERカテゴリの最新記事