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

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

Notification Channelの内容の更新でちょっとハマった話

Notification Channelでアプリの前バージョンでsetSoundしていて、
それをしないように更新しても、音が鳴り続けてしまうので、なんでやって調べたところ、
どうやらNotificaion Channelで一度設定した項目はプログラムからは変更できないらしい。

理由は以下、
>After you create a notification channel, you cannot change the notification channel’s visual and auditory behaviors programmatically—only the user can change the channel behaviors from the system settings.

>引用:[Create and Manage Notification Channels](https://developer.android.com/training/notify-user/channels#UpdateChannel)

要は、ユーザからもチャンネルの設定の変更が

元記事を表示

[Android]画像をとりあえず Drawable フォルダに放り込むのをやめよう

# はじめに

Android ではデバイスの表示画面に応じた、ビットマップ画像を格納する仕組みが用意されています。
それがぞくに言う Drawable フォルダというやつで、DPI に応じて画像を格納できるフォルダが用意されています。

|密度修飾子 | Drawable フォルダ | DPI値 | ピクセル比 | スケーリング比 | 説明 |
| — | — | — | — | — | — | — |
| LDPI | drawable-ldpi | 〜120 | 36×36 | 0.75 | 低密度(ldpi)の画面(〜120dpi)に適応するリソース |
| MDPI | drawable | 〜160 | 48×48 | 1.00 |
| MDPI | drawable-mdpi | 〜160 | 48×48 | 1.00 | 中密度(mdpi)の画面(〜160dpi)に適応するリソース |
| HDPI | drawable-hdpi | 〜240 | 72×72 | 1.50 | 高密度(hdpi)の画面(〜240dpi)に適応するリソ

元記事を表示

UnityのAndroidアプリにAdMob 広告を入れたときのエラーやトラブル解決法

#はじめに
[現在開発中のアプリ](https://tedenglish.site/developments/#toc2)でNendAdやUnityAdsを入れているのですが
調べているとAdMobが結局相場が良いとの情報があったので試しに入れることにしました。
そこで色々トラブルありましたので備忘録としてここに残しておきたいと思います。

#環境や利用するもの
Unityバージョン:2019.2.12f
Android周りのモジュール(NDKやらAndroid周り)も一緒にインストールしています。

導入方法は基本[こちら](https://developers.google.com/admob/unity/start?hl=ja)を参照してください。
プラグインは「[v4.1.0](https://github.com/googleads/googleads-mobile-unity/releases/tag/v4.1.0)」というものを取り込みました。

#取り込み時に出るウィンドウ
後で書いているので詳細に覚えていないのですが、取り込むと初めになにかポップアップが出てきました

元記事を表示

DarkMode対応するときはNavitgationを使おう!

DarkMode対応している時にある現象が発生してハマった。

BottomNavigationBarの画面遷移をFragmentManagerで管理していて、
二番目のタブが選択されている状態でダークモードに切り替えるとタブは二番目が選択された状態で一番目のタブのFragmentが表示されてしまっていた。
画面遷移をAACのNavigationで管理してあげると現象は起きなくなった。

古いアプリをDarkMode対応するとNavigationの対応も必要になるっぽいので少し面倒かも。

事象発生の原因はまだ未解明。時間のある時に解明したい。

元記事を表示

小心者が登壇してみて気づいた事

こんにちわ、 @m_kumanomi です。
Diverse Advent Calendar 2019の10日目の記事です。

昨日は[UnityプロジェクトをBitriseでアーカイブ](https://qiita.com/kiy0p0n/items/125e18a8d15d2ddf3b0f)するお話でした。
Bitriseは使っているものの設定とかよくわからんちんなのでワークフローなど学びなおしたい気持ちになりました。

# そもそもなんでこれを書こうと思ったのか
前置きとして僕はあまり登壇したことがありません。
しかしながら今年は2度ほど少し大きめのカンファレンスで登壇することができました。
そこで得た知見というか感想に近いものを書かせていただければと思います。

# 登壇に関して
あれ?こんな内容でもいいのかな・・・?と思うかもしれません。
いいんです!**あなたが当たり前に知っていることは、みんなは知らない**かもしれません。
誰か一人でも知らない人に届けばいいんです。そんな気持ちでやりましょう。

## 声にだして練習はしよう
実際に声に出して音読しましょう。思ったよりも早

元記事を表示

THETA x Hololensで視覚能力拡張

#はじめに
はじめまして、リコーの[Yuuki_S](https://qiita.com/Yuuki_S)です。
弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VやRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます
(詳細は本記事の末尾を参照)。

さて、THETAは周囲360°の映像が取得可能なカメラです。
360°、これは人間の視野(およそ200°)に比べて遥かに広いです。
しかし、自然界にはTHETAに近い視野を持つ存在がいます。
それは馬に代表される草食動物。
彼らの目は頭の側面に位置し、およそ330°の範囲を捉えます。
広い範囲を捉えることで、外敵を素早く察知する事が出来るのです。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

[ Android ] ApplicationContextをどこからでも呼び出す

前回はApplicationを継承したクラスについて紹介した。
https://qiita.com/QiitaD/items/549fb2143b2774c30d72

今回は、そのクラスを使ってApplicationContextをどこからでも呼び出す実装の仕方について紹介する。

##実装
メンバ変数にインスタンスを格納しておくことで、このクラスのgetメソッドからインスタンスを取り出すことができる。

~~~java
public class MyApplication extends Application {

//このクラスのインスタンスを保持しておくためのメンバ変数
private static MyApplication myApplication = null;
@Override
public void onCreate() {
super.onCreate();
//onCreate()が呼び出されると、インスタンスをメンバ変数に格納
myApplicat

元記事を表示

Pixel 3 XLに12月の更新を入れたらPixel Launcherが無限に落ちる問題を直す

ADBコマンドが利用できてUSBデバックが有効になっていることが前提です。

# 解決方法
ADBコマンドが使える状態で、

“`terminal:PowerShellとかのターミナル
adb uninstall com.google.android.apps.nexuslauncher
“`

### 追記。アンイストールの必要はない模様。[参考](https://twitter.com/k_for_kaushik/status/1204267354001047553)

“`terminal
adb shell pm clear com.google.apps.nexuslauncher
“`

## そういえば12月の更新まだかなー
って私は待っていたわけです。

そして今日(2019/12/10)更新が降ってきました。
どうやらPixel 3でもLive Captionが使えるとか(なお英語おんりー
Pixel Launcher(純正ホームアプリ)以外でもジェスチャーナビゲーションが利用できるとか(Pixel 4にはなぜかある機能)
ポートレートモードで写真を撮って無く

元記事を表示

「Migrate to AndroidX」をやってみたけれどハマってしまった(凡ミス)

# simple_permission(flutter)が、AndroidX対応されていなかっただけの話

自分のprojectを必死に`Refactor > Migrate to AndroidX…`
しかし、「No Usages Found in the Project」…。

![スクリーンショット 2019-12-10 12.13.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32839/147f1954-dad3-f3aa-a0e4-3cb949d37488.png)

「なんでや!エラーが出てるのになんでMigrateされんのや!!」って思ってハマってた。

エラーが出ちゃってる所はsimple_permissionの中でした…エラーちゃんと見れば、なんでもなかった!!

そしてpermission_handlerを使いました…simple_permission…ごめん…。

元記事を表示

archのViewModelProvider(s)から卒業するには

過去のrepositoryでarchのViewModelProvider(s)がdeprecatedになっていることに気づいたのでどうしたものかと思い、備忘録も兼ねてまとめることにする

## archのViewModelProvider(s)はもうメンテされないYO

> The android.arch Architecture Components packages are no longer maintained. They have been superseded by the corresponding androidx.* packages. See androidx.lifecycle.ViewModelProviders instead.

引用元
[arch ViewModelProvider](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider)
[arch ViewModelProviders](https://developer.android.co

元記事を表示

半年後に書くCA-Android基礎講座の備忘録~前半~

[CA Tech Dojo/Challenge/JOB Advent Calendar 2019](https://qiita.com/advent-calendar/2019/dojo-challenge-job)の12/11担当[@Izacchi16](https://qiita.com/Izacchi16)です。よろしくお願いします。

#はじめに
**私はどのインターンにも参加していません!**
1日目担当の[@hohohoris](https://qiita.com/hohohoris)さんに頼んだら快く参加を認めてくれました。

TechDojoに参加された方のこういった記録があれば是非教えてください。
##概要
2019年5月に渋谷のマークシティにて行われたCyberAgent社の学生向けに開かれた5日間のAndroid基礎講座にて私が学んだことの遅すぎるまとめです。

##きっかけ
Twitterにて人事の方が募集されていたので応募したら当選した

#Day0

前提として以下を準備してくるように言われました
当時の最新版3.4をインストール
SDKはAndroid9(

元記事を表示

Unity 2019.3でAndroidビルドすると”Android NDK not found”

notfound.jpg

HUBのバグのようなのですが、2019.2の時からバグがずっと発生しています。
修正されたり、ぶり返したりしていて面倒なバグです。

## 先に結論
HUBからNDK等をインストールしている前提です。

メニューから設定を開く`Preference -> External Tools`
Androidの設定で、NDKのパスを手動で設定します。

setting.jpg

HUBがインストールしたNDKのパスはデフ

元記事を表示

【フィットネスバイク】のインターネットを作る!!

※書き足りないので、少しずつ更新していきます

2度目のアドベントカレンダーに挑戦です。宜しくお願いします!

# 目的 (やりたいこと)

– **インターネット**につながる、**フィットネスバイク**を作りたい (↓こんな風に)
![実現したいイメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30975/495265a6-fe69-e3b8-d5c4-bc67f63c4702.png)

要は、フィットネスジム『[FEELCYCLE](https://www.feelcycle.com/)』のような**エンターテインメント・バイクエクササイズ**を、「**自宅に居ながらできる**」ような世界を目指す感じです。(後述のPelotonとかと同じ思想)

– **FEELCYCLEの公式イメージ動画:** https://youtu.be/ys-auAr3DFY
![feelcycle.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

ZXingのバーコード読み取り画面を縦方向にしたい

ZXingを使用する際にデフォルトだと横方向になってしまうのを縦方向に表示するようにした自分メモです。

##結論
CaptureActivity を継承した、空の Activity 作成し、 IntentIntegrator の captureActivity に渡してあげる。

“`kotlin
// 空の Activity を作成
private class PortraitActivity : CaptureActivity()
“`

“`kotlin
// 自分の場合は Fragment 内で使用していたので、forSupportFragment(this) としてあげています。
val integrator = IntentIntegrator.forSupportFragment(this).apply {
setPrompt(“QRを読み込んでください”)
captureActivity = PortraitActivity::class.java // ここで渡してあげる
}
integrator

元記事を表示

adbコマンドで端末を操作する

# adbコマンドとは
android開発者にはお馴染みですが、それ以外の人にとってはあまり知名度が高くないかもしれません。
>Android Debug Bridge(adb)は、デバイスと通信するための多用途コマンドライン ツールです。adb コマンドを使用すると、アプリのインストールやデバッグなど、さまざまなデバイス操作を実行できます。また、デバイス上でさまざまなコマンドを実行する際に使用する Unix シェルにアクセスできるようになります。
———- androidstudioユーザーガイドより

ざっくりいうとPCからAndroid端末に直接コマンドを送って色々出来ます。
尚、開発者オプションからUSBデバッグを有効にしておく必要があります。

# 端末を操作するコマンド
## テキスト入力
“`
adb shell input text hogehogehoge
“`
端末でキーボードが表示されている状態で入力すると選択欄に`hogehogehoge`で指定した箇所を入力できます。
長い文字列を手入力したくない時や、複数の端末で同じ文字を入れる必要があるとき

元記事を表示

SpringAnimationを気軽に使おう

# はじめに
ZOZOテクノロジーズ [#2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech2) 11日目の記事になります。

この記事では今年のGoogle IOのセッションにあった [Motional Intelligence: Build Smarter Animations (Google I/O’19)](https://www.youtube.com/watch?v=f3Lm8iOr4mE) を見て、「SpringAnimationって意外と気軽に使えるのでは?」と感じ実装してみた内容について記述します。

これを読んだ人が同じように `SpringAnimation` に可能性を見出してくれたら幸いです。
記事のボリュームを抑えるために `SpringAnimation` についての解説は省略します。
詳しく知りたい方は最後の『参考』にいくつかリンクを記載しておくのでそちらをご確認ください。

# 実装するアニメーションイメージ
「汎用的に使えるよ」ということを言いたいのでシン

元記事を表示

DiffUtil(+ListAdapter)実装時の注意点

この記事は[Android \#2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/android-2)の10日目の記事になります。

## はじめに

DiffUtilとListAdapterでリスト(RecyclerView)を実装すると、 `ListAdapter.submitList()` でアイテム配列を送るだけで、データの差分をとって必要なアイテムの追加や更新、削除をDiffUtil側で勝手に行ってくれます。

そんな便利なDiffUtilですが、自分が実装する上でその動作を勘違いしていたことがあったため、同じ轍を踏む人が生まれないように、その注意点を共有したいと思います。

ちなみに今回対象となるDiffUtilは、以下のようなシンプルな作りのものとしています。

“`kotlin:SampleDiffUtilListAdapter
class SampleDiffUtilListAdapter :
ListAdapter

元記事を表示

Deep Understanding of Seek

# はじめに

ExoPlayerでは以下のようにシーク操作を行うことができます。

“`kotlin

player.seekTo(positionMs)
“`

今回はこれが内部でどのようなことをやっていのかを詳しく解説します。

具体的には

– 渡されたpositionMsはどれだけ正確にシークされるのか。また、なぜそのような正確性になるのか。
– シーク処理にはどのくらい時間がかかるのか。また、なぜそのような時間がかかるのか。

を解説します。

注) ExoPlayer2.10.8で検証を行っています。
注) ExoPlayerでの話なので、他のPlayerではロジックや結果などが異なる可能性があります。

# シークの正確性

シークの正確性を知るにはまずpts(presentation time stamp)を知る必要があります。

動画は一枚の瞬間を表したframeと呼ばれる集合体で構成されていますが、映像はこのframeがパラパラ漫画のように連続的に描画されることによって映し出されます。そして、この一つ一つのframeはptsというframeが表示されるべ

元記事を表示

Android10でもクリップボードを使いたいっ

## はじめに
この記事は、[Android Advent Calendar 2019](https://qiita.com/advent-calendar/2019/android)の9日目です!

Androidでクリップボードを扱うには、以下のようにClipboardManagerを使うのが一般的です。
クリップボードを画面起動時に取得するにはonResumeなどでClipboardManagerを呼び出して取得していました。

“`MainActivity.kt
class MainActivity : AppCompatActivity() {
// 中略

override fun onResume() {
super.onResume()

Snackbar.make(root, getClipboard(), Snackbar.LENGTH_SHORT).show()
}

private fun Context.getClipboard(): String {
val c

元記事を表示

[Android]デバッグ中のアプリのSQLiteデータベースのファイルを取り出して中身を見たい

# 環境

Android Studio 3.5.3

# 方法

Android Studioの右下にある `Device File Explorer` を開く。

すると以下のような画面が出てくるので、 `/data/deta/(バンドルID)/databases/` とたどる。

するとSQLiteのデータベースファイルの一覧が現れるので、右クリックして「Save As…」などする。

元記事を表示

OTHERカテゴリの最新記事