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

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

Glideでキャッシングぅううう

# はじめに
[CA Tech Dojo/Challenge/JOB Advent Calendar 2019]の2日目はbatchが書かせていただきます.

私は今年の夏にCA Tech Dojo(Kotlin編)に参加させていただきました.めちゃくそ最高のインターンだったので来年も開催される場合は,おすすめです.Dojoはある技術の初心者の導入部分をサポートしてくれるインターンなので,最近気になってる技術をメンターさんに教えてもらいながら学ぶことができます.
詳しくは[コチラ](https://batch.hatenablog.com/entry/2019/08/19/215844)

# 本題
Glideを使って画像をリスト内で表示して,リストのItemがクリックして別の画面に遷移して,遷移先でリストに表示していた画像を使いまわしたいみたいなことはよくあると思います.そこで,Navigationなどつかって遷移先にも画像のURLをStringで渡して表示するということをしても実装できますが,GlideではURLをキーとして画像をキャッシュしてまた,遷移先でおなじキーでキャッシュか

元記事を表示

Android リアルタイム入力でハッシュタグ形式に文字装飾するTIPS

# 本稿の目的
`#`から始まるハッシュタグの部分の色が変わり、タップするとハッシュタグの内容に応じたフィードの検索などを行う機能は最近ではあたりまえのUXになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125724/8e1385cf-052a-7e93-ede3-8c520df845a8.png)

Androidでの文字装飾は`UnderlineSpan`や、`ForegroundColorSpan`を組み合わせれば簡単に実装できますが、文字装飾した部分をクリックできるようにしたり、TwitterやFacebookのようにリアルタイムで入力した内容に応じて文字装飾を行うためにはどのように実装するべきかを説明します。

[iOSについても記述しています。よろしければどうぞ。](https://qiita.com/nosaka/items/000271616c072285674c)

# ラベルにハッシュタグの形式に相当する部分を文字装飾する&クリックできるようにする

元記事を表示

OkHttpを使った場合にWebViewのJavascriptInterfaceはどう呼ばれるか軽く調べてみた

AndroidのWebViewでは、*addJavascriptInterface*という、JavaオブジェクトをWebViewに埋め込む機能があります。これにより、WebView内で表示しているWebページに埋め込まれたJavascriptから、当該Javaオブジェクトで定義されたメソッドを呼び出せるようになります。

今回は、WebViewでのHTTP通信にOkHttpを利用した時、WebViewのコールバックメソッドはどう呼ばれるか軽く調べてみました。
読むのがめんどくさい方は最後の「まとめ」だけを読んでいただいてもよいです。

## WebViewを使用するActivityの実装
WebViewを使用するActivityのソースコードはこんな感じです。
サンプルコードがお粗末なのはご愛嬌です。

“`kotlin:MainActivity.kt
class MainActivity : AppCompatActivity() {

companion object {
const val TAG = “WebViewTest_”
con

元記事を表示

AndroidでFFmpegを使って音声ファイルを解析・変換する

# はじめに
FFmpegと聞くと、動画や音声を解析・変換することができたりと機能豊富で非常に難しそうなイメージですよね。ですが、音声だけに絞ってみれば意外と簡単(?)に使いこなすことができるんじゃないかと思います。

今回は音声解析・変換の基礎的な使い方をAndroidで実践してみたいと思います!
(サンプルコードは[こちら](https://github.com/tarumzu/FFmpegSampleAndroid))

# FFmpegのインストール
AndroidのFFmpegライブラリはいくつかありますが一番開発が活発な[mobile-ffmpeg](https://github.com/tanersener/mobile-ffmpeg)を使ってみます。
mobile-ffmpegはAndroidの他にiOS, tvOSで利用でき、メインバージョンとLTSバージョンがあります。
(今回ご紹介するコマンドはどちらのバージョンでも使えます)

“`gradle:app/build.gradle
// NOTE: フル機能が使えるがサポートされるAPIレベルが24以上
impl

元記事を表示

AndroidでViewModelのLiveDataをアプリケーションで共有する

## 概要

AndroidでViewModelに保持したLiveDataの値をアプリケーションで共有したい場合のメモ

## 方針

本来の仕様では起動中のActivityのインスタンスとViewModelが1対1で対応するため、
Activityのインスタンスが変わってしまったり、異なるActivityのインスタンスからLiveDataをobserveしても、
変更検知ができません

“`kotlin
class MyActivity : AppCompatActivity() {
private val userViewModel: UserViewModel by lazy { ViewModelProviders.of(this).get(MyViewModel::class.java) }
override fun onCreate(savedInstanceState: Bundle?) {
userViewModel.user.observe(this, Observer{ user ->
// OtherActivit

元記事を表示

THETAにお手軽Linux環境を内包させる

この記事は [IoTLT Advent Calendar 2019](https://qiita.com/advent-calendar/2019/iotlt) の2日目の記事です。

## はじめに
リコーの @KA-2 です。

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

と、定型文をかきつつ、、、
今回の記事はプラグインの仕組みや知識を利用した新しいTHETAカスタマイズ方法についてまとめました。
タイトルをみて「adb shellの話?」と思った方、「遠からず」ですが、もっと自由度がある環境にする話です。

adb shellを上手に利用したAndroidアプリをTHETAにインスト

元記事を表示

androidアプリ 外部アプリを使ってファイルを転送する

androidアプリについて

– zipファイルを外部アプリ(mail、Lineとか)使って転送する機能を実装しようとして、ハマったのでメモ
– 結論としては、Android7から『file://』による指定ができなくなったため、fileproviderでuriを作る必要があった

## 実装

“`AndroidManifest.xml


元記事を表示

最近Flutterで作ってるもの

[Flutter #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/flutter-2)の2日目の記事です。

今までFlutter、Dart関連はちょくちょく触ってましたが、ちゃんとアプリとして公開等したことがなく、Flutter Web対応も発表されたので、もうちょっと深く触っていきました。

## 自分のレベル感

– 普段業務: Webプログラマ(Rails) 5年程度
– iOSとAndroidも一度は開発の経験有り

## 作ってるアプリ概要

– Bouyomisan Flutter
– 以前 Dart で作ったサービスのリプレイス
– Flutter web
– Regonn&Curry.fm
– ポッドキャストを聞くためのスマホアプリ

CIやデプロイは[Codemagic](https://codemagic.io/)を利用しているので、そのあたりも所感に含めて書いていきます。

## Bouyomisan Flutter
以前、YouTubeLiveコメント読み上

元記事を表示

人生で初めて意図的にtry catchを使った話

こんにちは、ヨースケです。
![qiita1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534506/f1fe294c-01d6-69f9-2fa6-5e8f6f34140f.png)
記事を出して3つ目の[僕がAndroidアプリ開発をする上で気を付けていること](https://qiita.com/ysk75/items/52bece8017532f1e8875)が300以上のviewsにいいねが4も付きました!ありがとうございます!励みになりますなります。m(v _ v)m

– 以前は..
– 初めてのアプリで

### 以前は..
 意図的じゃなかったらどうやってtry catchしてんだwって話なんですが、今までは参考書とかに書いてある通りコードを打って「あぁ、例外処理なんだな」と思って何にも気にしていませんでした。なので、try catchをする意味も理解できていませんでした。食わず嫌いも少しあったかもしれません。

### 初めてのアプリで
![qiita1-1.png](https

元記事を表示

AndroidでListViewと関数オブジェクトを使ったメニュー画面を作る。

# はじめに

以下のようなListViewを使ったメニュー画面を作るときに、
項目ごとに実行される処理が異なるので、
その処理部分を関数オブジェクト化してみたら、
一元管理できて便利だったのでまとめておきます。

## レポジトリ

https://github.com/cnaos/ListMenuExample

## 利用技術

* DataBinding
* DataBinding-ktx(https://github.com/wada811/DataBinding-ktx)

## MainActivity

“`kotlin:MainActivity.kt
class MainActivity : AppCompatActivity() {

// wada811さんのDataBinding-ktx

元記事を表示

[Unity] Androidアプリの64ビット対応でつまづいた話

# はじめに
Play StoreにAndroidアプリをあげる際に**64ビットにしてね!!**と言われ,対応したはずなのに64ビット対応できてないと何度も怒られようやく解消できたので,解決方法をまとめます.

# なんで64ビット対応するの?
[参考](http://tsubakit1.hateblo.jp/entry/2019/01/18/003659)
ざっくりいうと,2021年8月以降64ビットしか扱えないから対応してねという理由.

# 環境
– Mac OS Mojave 10.14.6
– Unity 2018.3.6f1

# 調べたとおり64ビット対応する
[このサイト](https://www.petitmonte.com/unity/android_64bit.html)などを参考に64ビット対応します.
1. Unity>Preference>External toolsのNDK部分を埋める.
![スクリーンショット 2019-11-22 16.51.13.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【Android】動的Layout生成に潜む罠

ついにきましたね、[CA Tech Dojo/Challenge/JOB Advent Calendar 2019]、初日は@hohohorisが書かせていただきます。

自分は、2019年8月にCA Tech Dojo(Kotlin編)に参加させていただいた後、10月にCA Tech JOBでCATS(CyberAgent Advanced Technology Studio)でAndroidエンジニアとしてインターンをさせていただきました。

詳しくはインターン参加記を書いたので是非。

[CA Tech Dojo(AndroidアプリKotlin編)という最高のインターンで最優秀賞をもらった話](https://kurutabrog.hatenablog.com/entry/2019/08/19/090000)
[【CA Tech JOB】CA Tech Dojoからの成長](https://kurutabrog.hatenablog.com/entry/2019/11/03/180000)
#概要
この記事ではAndroid開発で避けては通れないLayout周りの話をします

元記事を表示

Android LibraryをGitHub ActionsでビルドしGitHub Packagesで公開する

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

また、今年は全部で5つのAdvent Calendarが公開されています。

– [ZOZOテクノロジーズ #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech2)
– [ZOZOテクノロジーズ #3 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech3)
– [ZOZOテクノロジーズ #4 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech4)
– [ZOZOテクノロジーズ #5 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zo

元記事を表示

Android Edge-to-edge入門

この記事は概ね、[Gesture Navigation: Going edge-to-edge (I)](https://medium.com/androiddevelopers/gesture-navigation-going-edge-to-edge-812f62e4e83e)と[Gesture Navigation: Handling visual overlaps (II)](https://medium.com/androiddevelopers/gesture-navigation-handling-visual-overlaps-4aed565c134c)の記事に沿って書いています。


Android Qから新しいシステムナビゲーションが追加されました。
iOSではおなじみですが、ボタンではなくジェスチャーによって前の画面に戻ったりAndroidのホーム画面に遷移することが可能になりました。
gesture.gifDelphi で Pull To Refresh

# PullToRefresh

Delphi で簡単に PullToRefresh しようよ~(ジョイマン風に)

## PullToRefresh とは

上から下に引っ張ると表示内容が更新される機能です。

## ListView PullToRefresh

[TListView](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListView) には [PullToReflesh](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListViewBase.PullToRefresh) が機能として提供されています。

PullToRefresh の所にも書いてありますが、使い方は

1. PullToRefresh プロパティを True にする
2. [OnPullRefresh](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListViewB

元記事を表示

【Android】Viewのスクリーンショットを撮影してギャラリーアプリで見れるようにする

# 背景
画面内に表示されている特定の情報を画像として保存し、後から見返せるようにしてユーザー利便性を向上させたいという要件がありました。(例えば、ゲームアプリのユーザー情報だったり、乗換案内アプリの検索結果だったり。)

この記事ではこの要件の実現方法について、下記のポイントを解説いたします。

– スクリーンショットの撮影方法
– ギャラリーへの反映方法

# コード解説
全てのソースコードはGithubで公開しています。
クローンして手元で動かしてみると処理の流れがイメージしやすいと思います。
https://github.com/umechanhika/playground/tree/master/android/AddScreenshotToGallery

今回のポイントとなるコードは、スクリーンショットの撮影から保存までを行なっている[ScreenshotUtil.kt](https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/src/main/jav

元記事を表示

[Android]ExoPlayer でハードウェアのデコーダーを利用しないようにする

# はじめに

ExoPlayer ではメディアにあわせて一番良いデコーダーを再生時に自動的に選択してくれるので、
ExoPlayer を利用する時は、デコーダー周りは特に何も気にしないで良いことになっています。

そのはずだったのですが 端末に搭載されるハードウェアのデコーダーの不具合?なのか
再生時に動画が途切れたり、上手くループ再生できなくなるなどの現象に遭遇しました。

その時に ExoPlayer に対してはハードウェアのデコーダーを利用しないように
設定を施したのでその方法を共有したいと思います。

# 動作を確認するためのサンプルアプリを作る

本記事では次のような構成のアプリを作成していると仮定して設定を進めていきます。

![Nov-29-2019 23-20-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/0ae7c688-92ea-246a-8ce8-9dd696442c56.gif)

## ExoPlayer をインストールする

“`groovy:build

元記事を表示

Android で OpenCV のサンプル mixedprocessing を試す

[AndroidStudio で OpenCV をインポートする](https://qiita.com/ohwada/items/71eb18296aac46f9f5ee)
の続きです。

### 概要

Android 用 OpenCV には、
8個のサンプルが同封されている。

そのうち mixedprocessing は、
Native API を使うサンプルサンプルです。
前回の記事で作った Android のライブラリをインポートする手法は使えないので、
アプリごとに Android 用のOpenCV をインポートしてビルドする。

### tutorial-2-mixedprocessing

OpenCVの Java API と Native API の2つの方法で、
カメラからの画像を変換して、表示するサンプルです。

メニューは下記の4つ
– Preview RGBA
カメラ画像をカラーで描画する
– Preview Gray   
カメラ画像をグレースケールで描画する
– Canny 
キャニー ( Canny) 法によりエッジを検出して描画する
– Find f

元記事を表示

AndroidStudioでFileInputStreamを使うときの文字化けについて

実機デバッグ時に文字列をメールアプリの本文に渡したら、文章の間に文字化け記号が挟まった。
#AndroidStudioの基本的な設定
ここを見る。

http://k-hiura.cocolog-nifty.com/blog/2015/07/androidstudio-b.html

##FileInputStreamで文字コードをUTF-8指定にする
文字化けするコード

“`
public String readFile(String fileName){
try {
FileInputStream stream = openFileInput(fileName);
byte[] buf = new byte[1024];
stream.read(buf);
return new String(buf);
} catch (FileNotFoundException e) {
e.printStackTrace();

元記事を表示

FlutterでAndroidアプリをリリースした時に解決したつまづきポイントメモ。

# 検証日時

2019年11月28日

# 全体的なリリースまでの流れと、本記事の概要

公式チュートリアルです。
https://flutter.dev/docs/deployment/android

英文がよくわからないという場合は、Chromeで日本語翻訳にかければほぼほぼ内容わかります。対応している単語がわからないときは翻訳を切って見比べると解決します。

このチュートリアルを進める時にエラーが出た部分にフォーカスして、その解決法(自分のケースでうまくいった操作)などを共有します。

# 署名構成の部分でコピペ忘れでデバッグ版ビルドに署名していたのを解決

チュートリアル「Configure signing in gradle」の「With the signing configuration info:」の部分について

“`signingConfig signingConfigs.release“`は初期設定だと“`debug“`になっててコピペ忘れてGoogle Play Consoleアップ時に「ビルドの署名がデバッグバージョンにされてます」という趣旨のエラー

元記事を表示

OTHERカテゴリの最新記事