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

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

Activityを保持しない場合のonActivityResult

# はじめに
Activityを保持しない場合も動作するように修正しようとしたら、ハマってしまい苦労したので備忘録として書きます。

Intentで他のアプリを起動した場合など、Activityがバックグラウンドに移動した時にメモリが足らなくなると、
もともと起動していたアプリ(Activity)を終了してメモリを確保するみたいです。
この時、アプリが復帰する動作が通常とは異なる動きをするので注意が必要です。
ただ、裏ですごいリッチでグラフィカルなゲームを起動してるとか、動かしてるアプリがめちゃめちゃメモリ喰うとか、端末が古くてすごい非力な場合とかの少し特殊な場合でしか起こり得ないことなので気づきにくいかもしれません。

# 結論
onActivityResultとonStartの呼び出し順が変わるので注意!!

## 再現方法

開発者向けオプションから「アクティビティを保持しない」の項目をONにすることで、Activityがバックグラウンドに移動した場合に常に終了するようにできます。

## ライフサイクル

Activityを保持する/しないの両方共動くようにしようとしたら、思っ

元記事を表示

Kotlinで文字列を選択できるドラムロールをシンプルに実装

#NumberPickerを使ってドラムロールを実装する
Kotlinならドラムロールはわりと簡単に実装できます。

##ドラムロールを実装

レイアウトにドラムロールとなるNumberPickerを追加します。

“`Xml:activity_main.xml

“`

onCreateメソッドでNumberPickerに文字列をセットしていきます。

“`Kotlin:MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

//ドラムロール表示用の配列作成
val fr

元記事を表示

[Android] Jetpack LiveData (Jetpack ViewModel MVVM+Repositoryパターン)

Android Studio 4.1.3(windows版) での流れとなります

ここではMutableLiveDataをRepositoryで持ち単純なデータのModelを扱うだけの
シンプルな構成で一連の流れを説明します

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack LiveData/MVVM+Repositoryパターンの説明は以下です

https://developer.android.com/jetpack/guide?hl=ja

## Layoutの準備
ここではViewBindingを使用して実装します
ViewBindingの設定方法を知りたい方は以下を参照してください

https://qiita.com/smurata_pvt/items/99cd5f878b4eedb84dc8

MainFragmentのテンプレートにあるTextViewはidが指定されていないため
ここではtext

元記事を表示

backgroundとbackgroundTintの違い

# `android:background`

背景として使用するドローワブルで、描画可能なリソース(PNG画像、9パッチ[^2]、 シェイプドローワブル[^1]、色を指定します。

色の形式は「`#rgb`、`#argb`、`#rrggbb`、`#aarrggbb`」があります。

#`android:backgroundTint`

backgroundにカラーフィルターをかけて色を変化させることが出来ます。

例えば、`android:background=”#FF0000″`(赤)で、`android:backgroundTint=”#00FF00″`(緑)を指定すると、`#FFFF00(黄色)`になります。

> [3原色と色度図より](https://www.shokabo.co.jp/sp_opt/spectrum/color3/color3.htm)

色の形式は`android:background`と同じく、「`#rgb

元記事を表示

UnityでFacebookSDKのAndroidでログインエラーの解決方法

# 概要
UnityでFacebookSDKを使用してAndroidでログインエラーが出てしまう問題の解決方法

# 問題点
KeyStoreの作り方がFacebookで紹介されているものと別であったため、Unity上で表示されたキーハッシュが間違っていた

# 解決方法
確実なキーハッシュの取得方法はIResultのRawResultの中に記載されている

“`
// 初期化等は割愛

FB.LogInWithReadPermissions(・・・, OnLogin);

void OnLogin(IResult result)
{
// こいつを確認する!!!
Debug.Log($”Raw:[{result.RawResult}]”);
}
“`

# その他エラー解消のための参考文献
[公式](https://developers.facebook.com/docs/unity/getting-started/android)
[ザ・ゆるふわ](http://ado3s.hatenablog.com/entry/2016/11/07/015736)
[cloudpa

元記事を表示

[Android] Jetpack Navigation 画面遷移とFragment間のデータ受け渡し

Android Studio 4.1.3(windows版) での流れとなります

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack Navigationの画面遷移とFragment間のデータ受け渡しの説明は以下です

https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja

https://developer.android.com/jetpack/androidx/releases/navigation

## SafeArgs を追加する
※ 現時点ではandroidx.navigation:navigation-safe-args-gradle-pluginをimplementationでは動作しないようです
※ androidx.navigationのバージョンに合わせて設定してください

“`build.gradl

元記事を表示

android:translationX(translationY)とは

`android:translationX(translationY)`は、「座標」を使ってViewを位置を指定する属性です。

android:translationX(translationY)共に、画面中央を0として「X座標」「Y座標」を指定します。

[リファレンス](https://developer.android.com/reference/android/view/View#attr_android:translationX)によると、「px/dp/sp/in/mm」を指定出来るとのことです。

# 使い方

まずは、何も設定していない状態です。

`android:translationX=”100dp”`を指定すると、右側に「100dp」だけ移動します。

【Kotlin 初心者】アプリにロゴを設置する方法

## アプリにロゴを設置する方法
アプリを作る際には必ずロゴを設置しなければいけません。
手順はとても簡単です。

Android Studioなら簡単にロゴを設定できます。

– 参考URL
https://developer.android.com/studio/write/image-asset-studio?hl=ja

## 手順
– app > res > New > image Assetをクリック

– このような画面が出てきます

元記事を表示

【Kotlin 初心者】カメラ、ローカルの画像を表示するには

## Androidアプリでカメラ、ローカルから画像を表示する方法
シンプルにファイル or カメラのどちらかを選択し画像を表示してみます

– 参考URL
https://developer.android.com/training/camera/photobasics?hl=ja#TaskGallery

## イメージサンプル

– カメラを機能を有効にする

“`



“`

“`activity_main.xml

元記事を表示

海外のPlayストアのランキングを見る方法(クエリ使うだけ)

以前アフリカのザンビアに住んでいたことがあるのですが、ふと、「**ザンビアでの今のGooglePlayストアのランキングってどうなってるんだろ**?」と気になりました。

ググるとプロキシ変える方法やApp Annieを使う方法が出てきましたが、PlayStoreのURL( https://play.google.com/store/apps/top )にクエリ(`?hl=ja&gl={2文字の国コード}`[^1])を加えるだけでも国外のPlayストアの情報を見ることができるようです。
※国コードである根拠はないのですが、挙動見る限り合ってそう。

– US
– https://play.google.com/store/apps/top?hl=ja&gl=US
– ザンビア
– https://play.google.com/store/apps/top?hl=ja&gl=ZM
– ロシア
– https://play.google.com/store/apps/top?hl=ja&gl=RU
– 中国
– https://play.google.com/sto

元記事を表示

github actionsでunityビルドしてiOSとAndroidのストアに自動的に提出する

こんにちは。[virapture株式会社](https://virapture.com)の[もぐめっと](https://twitter.com/mogmet)です。

![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/a7a01e3a-d281-9b12-f3ec-9882a8dae412.jpeg)

この記事を書いてるときは冬なんですけど、もう自分の写真がなさすぎて夏までさかのぼってしまいました。

本日は[CI/CD with Unity, GitHub Actions, and Fastlane](https://medium.com/@davidmfinol/ci-cd-with-unity-github-actions-and-fastlane-e7aaa337784)という記事を参考にUnityでの自動ビルドとストア提出を作ってみたのでそのメモ書きを残しておきます。

## 概要

UnityにはUnity Cloud Buildという公式のCIがあるのですが、

元記事を表示

VLC for Android:楽曲管理画面の解析

# はじめに

VLC for Androidの楽曲管理画面を解析する。ゴールは登場するクラスの洗い出しと関連性のざっくりとした把握。

# 各種リンク

[アプリ](https://play.google.com/store/apps/details?id=org.videolan.vlc&hl=ja&gl=US)
[GitHub](https://github.com/videolan/vlc-android)
[公式サイト](https://www.videolan.org/index.ja.html)

# 楽曲管理画面のスクリーンショット

WIP

# 楽曲管理画面のオブジェクト図

こんな感じ。赤いオブジェクト図は楽曲管理部分
ざっくりいうとリポジトリクラスの状態を監視して、各モデルクラスのインスタンスを取り出してUIに反映している。

![Class Diagram0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39706/83175a3a-f2c3-dd9b-f08f-01b5a6

元記事を表示

[Android] Jetpack DataBinding

Android Studio 4.1.3(windows版) での流れとなります

Jetpack DataBindingでボタンイベントを設定する方法を例にして説明します

Android DeveloperのJetpack DataBindingの説明は以下です

https://developer.android.com/topic/libraries/data-binding?hl=ja

## 準備
以下を参考にJetpack Navigation + ViewModelを作成してください

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

## DataBindingを使用するための設定
build.gradleに以下を追加します
DataBindingを有効にするとBindingクラスが自動生成されます

“`build.gradle
android {
dataBinding {
enabled = true
}
}
“`

## ViewModelでの準備
ボタンイベ

元記事を表示

Firebaseの関連するユーザデータ削除を簡単に実現してみる【Authentication,Firestore,Functions】

# 前置き
Firebase Authenticationで、クライアント側から簡単にユーザ登録できるんだから、削除も簡単でしょうと思ってた愚か者のお話です。

ログイン中のユーザインスタンスから[deleteメソッド](https://firebase.google.com/docs/auth/web/manage-users#delete_a_user)を叩けばユーザ削除も簡単だよね!やってみよう!

“`
mAuth.getCurrentUser().delete().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Log.d(“DEBUG”,”Successful to delete user.”);
} else {
Log.e(“DEBUG”, “Failed to delete user.”, task.getException());
}
});
“`

“`
2021-03-13 11:04:38.569 6841-6841/com.cr

元記事を表示

Android ナビゲーションバー透過

“`xml:app/res/values/themers/themes.xml
@android:color/transparent
true
true
“`
“`kotlin:MyActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
window.setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.

元記事を表示

AndroidStudioでメモリ容量が足りないときの対処法

#AndroidStudioでメモリ容量が足りないときの対処法

###筆者がAndroidStudioでアプリを作成しているときに、AndroidStudio側から「メモリの容量が少なくなっている」との指摘がありました。
そのときに作っていたアプリですが、変数の数が非常に多いアプリだったので、作業中に打ち込んだコードの読み込み時間が長くなってしまって、効率よく作業を行うことができなくなってしまいました。
原因を調べてみると、改善策がいくつか見つかりましたが、その中で実際に行ったら読み込み時間が改善されて、最も簡単だった方法を載せます。

AndroidStudio起動時の「Welcome to Android Studio」ダイアログ右下の「Configure」をクリックして、「Preferences」を選択する。
![2021-03-21_03.11.14_Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/794916/25a78ec0-7e17-7c09-61ce-997c407bd636

元記事を表示

カスタムViewを作る時、onMeasureをどのように実装すべきか

カスタムViewを実装するとき、onMeasureを実装していますか?
別に何もしなくても使えるから何もしてない、って人も多いでしょう。私もそうです。
しかし、Viewの種類にもよりますが、wrap_contentが適切に動作しない場合がありますので、どのように実装すべきかを整理してみます。

# onMeasureとはどういうメソッドか?

`onMeasure`というメソッドは親となるViewGroupが子Viewの大きさを決めるためにコールします。(より正確には子Viewのmeasureをコールし、その中で`onMeasure`がコールされます)
子Viewは`onMeasure`がコールされると、引数で渡されたMeasureSpecの値を元に、自身のViewの大きさを決めます。
戻り値を返すのではなく、onMeasureの中で`setMeasuredWidth`/`setMeasuredHeight`で自身の大きさを設定しておき、親Viewは`getMeasuredWidth`/`getMeasuredHeight`で子Viewが決めた大きさを参照します。

なお、`setMe

元記事を表示

ActivityResultContracts.RequestMultiplePermissions チートシート

最近はパーミッション関連の処理が随分と簡潔に書けるようになったのは嬉しいのだけれども、なにが困るってJavaで書かなければならない時に少し混乱することがあるのでチートシートとして :scroll:

– [ActivityResultContracts.RequestMultiplePermissions  |  Android Developers](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestMultiplePermissions)
– [Getting a result from an activity  \|  Android Developers](https://developer.android.com/training/basics/intents/result)

## Java

“`java
private final ActivityResultLauncher reque

元記事を表示

GestureDetectorを用いたドラッグ&ドロップの実装【Flutter】

Flutterでウィジェットのドラッグ&ドロップを実装するには通常、Draggableウィジェットでラップすると実現できる。
だが、例えば「グリッド線に沿ってドラッグ」などのギミックを作りたいときは不向きなのではないか?と思った。
(もしかするとDraggableでもできるかもしれないけど!わからん!)

そうして2日間__GestureDetector__を利用したドラッグ&ドロップの方法を模索していたが、苦戦。
最終的にStack Overflowに質問をしてみたところ、秒速で解決したので、日本語でまとめておく。

ちなみにStack Overflowの記事はこちら。

https://stackoverflow.com/questions/66719501/why-is-the-origin-of-the-widget-constantly-at-top-left-when-i-use-transform-tran

#コード

“`dart
import ‘package:flutter/material.dart’;

class DragButton extends St

元記事を表示

MIT App Inventor で試しに作った「ボタンを押したら音声合成でしゃべる Androidアプリ」を Kotlin で作ってみた

## はじめに
以前、このような記事を書いたのですが、これの Kotlin版です。

●MIT App Inventor で試しに作った「ボタンを押したら音声合成でしゃべる Androidアプリ」を Java で作ってみた – Qiita
 https://qiita.com/youtoy/items/a0c26a3b8a671a2bb707#%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E5%85%A8%E4%BD%93

上記の「MIT App Inventor で試しに作ったアプリ」の話は以下で書いています。

●ビジュアルプログラミングで Androidアプリ開発ができる「MIT App Inventor」を試す(ボタンを押したら音声でしゃべるアプリを作る) – Qiita
 https://qiita.com/youtoy/items/93f7c786ff9d664d3032

## 参考情報
今回の内容は、以下を見つつ実装しました。

●Kotlinで合成音声を出力するアプリを作成[Android] | トモブ

元記事を表示

OTHERカテゴリの最新記事