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

Android関連のことを調べてみた2021年05月18日
目次

[Kotlin]半透明の操作不可用のViewを表示する。

#はじめに
ユーザー操作を防ぐために、半透明の膜をActivity画面の最前面に作成する。

#ソース
“`kotlin.kt
var vwFilm: View? = null
protected fun showFilm(){
if(vwFilm == null) {
this.vwFilm = View(this)
vwFilm?.setBackgroundColor(Color.parseColor(“#66FF00FF”))
addContentView(vwFilm, ViewGroup.LayoutParams(base.width, base.height))
vwFilm?.bringToFront()
//イベントを下の要素に貫通させないために空リスナーをセット
vwFilm?.setOnClickListener { }
}else{
vwFilm?

元記事を表示

Googleフォト容量無制限終了に備えて非root化なPixelをGoogleフォト アップロードサーバーにしてみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207109/5725e5af-d0d8-686f-0805-981e6e421771.png)

# はじめに

2020年11月に[Googleアカウントのストレージポリシー変更](https://japan.googleblog.com/2020/11/storage-policies-update.html)のアナウンスがあり、2021年6月1日よりGoogleフォトの容量も無制限ではなくなることになりました。
しかし以下の記載のように2021年5月現在発売中のPixel端末からアップロードされた写真は、引き続き高画質であれば容量無制限となります。

> また、Google Pixel 3 〜 5 の端末をご利用の場合、対象デバイスから高画質でアップロードされた写真と動画は、今回の変更の対象外です。つまり 2021 年 6 月 1 日以降も写真と動画についてはストレージに計上されず引き続き無制限でお使いいただけます。

※`Googl

元記事を表示

Flutterを既存のAppに組み込む

Flutterを試したい、でも既存のアプリはネイティブで構築しており、全部Flutterに置き換えたらなんか怖い。。。といった思いを持っている開発者は少なくないでしょう。今回は既存のiOS、Androidプロジェクトを維持したままアプリの一部の画面をFlutterで作成します。

>環境
OS: macOs Big Sur 11.1
flutter: 2.0.4

flutterとネイティブ間の画面遷移に伴う値渡しも実現できます。
2021-05-10 16.39.39.png    2021-05-10 16.40.39.pngKotlin(Android)でJpg画像をCropする

#はじめに
Kotlin(Android)で画像をCropする。

#ソース

https://www.fixes.pub/program/297572.html
上記の3#を参考。

“`sample.kt
private fun cropImage(bitmap: Bitmap, x: Int, y: Int, w, Int, h: Int): ByteArray {
val bitmapFinal= Bitmap.createBitmap(
bitmap,
x, y, w, h
)
val stream= ByteArrayOutputStream()
bitmapFinal.compress(
Bitmap.CompressFormat.JPEG,
100,
stream
) //100 is the best quality possibe
return st

元記事を表示

バグ報告やフィードバック機能を簡単に爆速でアプリに導入できるShakeを使ってみた!!

## はじめに

アプリにバグ報告やフィードバック機能を入れると
アプリのブラッシュアップに繋がり,ユーザ&デベロッパにとってとても有益です。
ただ,サーバサイドとの連携も考慮すると気軽に実装,とはいかないです。

そんな中,**Shake** というサービスを見つけたので,
今回は,サンプルの iOS アプリで導入して試してみました。

https://www.shakebugs.com/app-developers

## Shake とは

上記リンクにある通り,機能はたくさんあります。
その中で気になったのはバグ報告・フィードバックできる点でした。
受け取った内容をデベロッパがどう処理できるかも使ってみて興味持ちました。

ユーザは端末を Shake して(振って)送信フォームを表示させ,
内容を書いたり,スクリーンショットに手書きでdrawしたものを添付して送信できます。

デベロッパはフィードバックを受け取るとダッシュボードで確認できるようになって
コメント残したり,JIRA や Slack などと連携もできるので便利です。
リリース前も QAチームとのバグ報告の時とかも役

元記事を表示

FTS(全文検索)について調べたので、KotlinでNgram法の文字列分割を実装してみた

AndroidのSearchViewを使った検索機能について調べていると、出くわす「FTS(全文検索)」という単語。
この単語についてあまり理解していなかったので、調べてみました。

先人の方々が詳しくまとめてくれていました。特に参考になったのは、以下の記事です。
・[Wikipedia「全文検索」](https://ja.wikipedia.org/wiki/%E5%85%A8%E6%96%87%E6%A4%9C%E7%B4%A2
)

上記のページを見れば、全文検索の概要は把握することができます。ありがたい限りです。

## FTS(全文検索)とは
「Full text search」の頭文字を取った語。
複数の文書にまたがって、文書に含まれる単語の検索を行う。
FTS(全文検索)はLIKEのようなパターンベースの検索とは異なり、単語ベースの検索を行う。

## 全文検索技術の分類
大きく「grep型」と「索引型」の2つの方法に分かれるようです。

### grep型
複数のテキストファイルの内容を順次走査していくことで、検索対象となる文字列を探し出す方法。
この方法は事前にインデ

元記事を表示

PicassoとGoogleAPIでfaviconを取得する

はじめに

  • URLを取得したときにわかりやすくアイコンを取得したかった
  • WebViewを使って取得するのは難しかった。
  • かんたんに完結にfaviconを取得したかった。

というわけで、PicassoとGoogleAPIを組み合わせてfaviconを取得しよう!!

準備(Gradle モジュール)

Picasaを使用するために、Gradleに以下の文を加筆する。

“`gradle

dependencies {

implementation ‘com.squareup.picasso:picasso:2.71828’
}

“`

準備(AndroidManifest)

インターネットに接続して、画像を取得するため、ユーザーパーミッションの以下の文も加筆しておく。

“`xml


元記事を表示

URLからドメイン部分を取得する方法。(手作り)

はじめに

制作途中のメモとして投稿してます。間違っているところ等ありましたらご指摘等よろしくおねがいします。m(._.)m オネガイ

今回色々調べてみて、ドメインを取得するだけなのに、色々とめんどくさそうなので、自分で作ってみた。
クラス自体は長くなってしまっているところもあるので、そのあたりはご愛嬌ということで。

使い方

“`kotlin

val text = “https://twitter.com/home”

//中に入ったURL(String)をドメインのみの文字型に変更する。
val domein = UrlDomein().hen(text)
//出力「twitter.com」

//中に入ったURL(String)がURLかどうか判断をする。
val check = UrlDomein().check(text)
//出力「true」

“`

中身のソース

“`kotlin

package 各個人で合わせてください。

class UrlDomein{

fun hen(moto:Stri

元記事を表示

備忘録 flutter開発で音声入力したいけど speech_to_text がうまく作動しない。

# 課題

下記リファレンスを参考にspeech_to_text でマイクから音声を拾って文章に文字起こしをしたいがうまく作動しない。

https://pub.dev/packages/speech_to_text/example

下記のようなコードを組んで問題点を調査したところ”The user has denied the use of speech recognition.”が呼ばれた。どうやらspeech_to_textをインスタンス化するところで失敗している模様。

“`

var hasSpeech = await speech.initialize(
onError: errorListener,
onStatus: statusListener,
debugLogging: true,
finalTimeout: Duration(milliseconds: 0));

if (hasSpeech) {
_localeNames = await speech.locales

元記事を表示

CircleCIのSlack orb 4.4の一番シンプルな使い方

以下の記事にて、AndroidアプリのCIにCircleCIを使った例の記事を書きました。
https://qiita.com/kasa_le/items/fab191326b42f5adb82d

[Slack orb](https://circleci.com/developer/orbs/orb/circleci/slack)がかなりバージョンアップしていて変わっていたので対応してみました。

# 環境など
ビルドしているのはAndroidアプリですが、Slack orbを使っている部分はどんなプロジェクトでも参考になるかと思います。

| ツールなど | バージョンなど |
|:–|:–|
|Circle CI |2.0|
|Docker size | Medium|
|Slack orb| 4.4|

## 注意事項
本記事の内容は、Slack Orb 4.4で動きます。
4.1や4.1.1では動かないので注意してください。理由は分かりませんが、私も動かなくてハマっていました。

# Slack Appの作り方
基本的には以下のページの通りです。

https://g

元記事を表示

FlutterでAdMobを表示(iOS/Android)

# はじめに
今回はAdMobの公式パッケージを使って広告を表示できるようにします。

# 更新履歴
2021.5.16 初回投稿

# 環境
– macOS Big Sur(11.2.3)
– Flutter (Channel stable, 2.0.6, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.56.0)

# 参考にしたサイト
– [flutterアプリでfirebase_admobからgoogle_mobile_adsに切り替えてみた – Qiita](https://qiita.com/kazutxt/items/8ea0eab5d

元記事を表示

[Flutter] Gitリポジトリからダウンロードしたプログラムでエラー

はじめに

Windowsで作成したFlutterアプリをGitリポジトリを通してMacにダウンロード。
それを起動させようとしたらエラーが出てきた。
Firebase関連のプラグインのバージョンを変えたりして、試行錯誤していたら余計にハマった。
バージョンがあってないやら、ファイルがみつからないやら、、、、、
あまりにも適当にやりすぎてエラーを再現できないが、備忘録としてエラー回避できた方法をいくつか残す。

エラー内容

Error output from CocoaPods:

[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no
platform was specified. Please specify a platform for this target in your Podfile. See
`https://guides.cocoapods.

元記事を表示

Termuxでpkg(apt)が使えない問題を解決する(2021年5月)

初投稿です。Android端末にTermuxを入れて遊んでいるのですが,最近`pkg update`や`pkg install`を実行すると`403 Forbidden`と表示され,パッケージのアップデートやインストールができなくなっていることに気づきました。調べてみたところ解決できたので記事にしてみることにしました。

#問題
Termuxで`pkg update`を実行すると下記のようにエラーが発生する。

>$ pkg update
>Checking availability of current mirror: ok
>Hit:1 https://grimler.se/termux-packages-24 stable InRelease
>Ign:2 https://dl.bintray.com/grimler/game-packages-24 games InRelease
>Ign:3 https://dl.bintray.com/grimler/science-packages-24 science InRelease
>Err:4 https://dl.bintra

元記事を表示

CIってなんぞやい

#SanSanの募集要項にて
筆者は、企業の募集要項を見るのが趣味なのですが、SanSan様の歓迎条件に
###・CI環境を用いた自動化経験
とありました。
聞いた事はあったのですが、CIがどういうもの掘り下げたいなぁと思いました。
#CIとは?
CI/CDとまとめて呼ばれる事もあるようで、
Continuous Integration / Continuous Deliveryの略です。

何なのかというと、自動でテストとビルド、リリースを自動で行う手法の事です。
###以上です。
まぁ、メリットは言わずもがな。
そのツールに、JenkinsやCircleCIなどがあります。

#簡単に使ってみるか
[CircleCIの公式はんずおん](https://circleci.com/docs/ja/2.0/getting-started/?section=getting-started)

やることは、GithubのリポジトリをCircleCIと共有するみたいです。

Githubがあるとサインイン出来るので、そちらで。
そして、自動化させたいリポジトリのset up projectを押

元記事を表示

【Android】ニコニコのコメント風アニメーションを実装する【Animation】

# はじめに

デザイナー「ここボタン押したくなるようなアニメーションさせてください!」

ぼく「わかりました!」

ってことで、ニコニコのコメント風アニメーションを実装することにした。
思ったより簡単にできたので、実装方法をご紹介。

# 完成形

こんな感じのものを作るよ。
前提として、ルートのViewGroupはConstraintLayoutを使ってる。

# やること

1. 画面サイズ取得
2. TextViewを生成する
3. Y位置をランダムで設定する
4. 生成したTextViewに制約を設定する
5. 右から左に移動する

## 1.画面サイズ取得

3の**「Y位置をランダムで設定」** と5の**「右から左に移動」** をするのに、画面サイズが必要になる。
幅と高さ別々で取得してもいいんだけど、画面

元記事を表示

アプリのデータが初期化されない時に確認したこと

Unityでアプリを作成し実機で何度か動作確認した際、以前のデータが残ったままになってしまっていたため対処法を記載

####1.すでにアプリが実機内に存在している場合

アプリをアンインストール後に再度ビルドを行う

####2.アプリが実機内に存在していないにもかかわらず、アプリインストール後に起動するとデータが残っている場合

[Androidの自動バックアップ]
(https://developer.android.com/guide/topics/data/autobackup?hl=ja)が有効になっている場合、作成されたバックアップファイルのデータが復元されてしまうため自動バックアップを無効にする

“`





“`

アプリアンインストール後に再インストールすると初期化された

元記事を表示

[備忘録]Java/Android 実行環境での改行コード取得

#改行コード

– CR: 復帰、\r
– LF: 改行、\n
– CR + LF: \r\n

\n とか \r はエスケープシーケンスで、16進数の数値にすると `0X0A`, `0X0D`らしい。
また、WindowsではCR+LF、unix系ではLF、MacOSではCRなど、実行環境によって使用する改行コードが異なる。

#実行環境での改行コード取得方法

“`java
final String BR = System.getProperty(“line.separator”);
“`

これで、(アンドロイドに限らず)このコードの実行環境でのエスケープシーケンスが取得できる。

##アンドロイドでの改行コード
↓実行してみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/054ab9cc-5050-a576-b3ed-4c3e1bb9fb96.png)
アンドロイドでの改行コードは”\n”(LF)ということが分かった。

###(おまけ)(どうでもいい話)

元記事を表示

Jetpack Compose のアルファ版で作成したサンプルを1.0.0-beta06にマイグレーションした

# はじめに
2020のアドベントカレンダーではJetpack ComposeのAlpha版を使ってQiitaビューアをサンプルアプリとして作ってみました。
現在はJetpack ComposeもBetaとしてバージョンを重ね、正式版のリリースも近づいて来ていると感じられます。

そこで、前回の記事のアルファ版からベータ版にマイグレーションをし、ここに至るまでAPIにどの様な変更が入り、開発者が注意すべき点がどの様なところにあるかをさらっと共有させていただきます。

# 主な対応内容
– Jetpack Compose を2021/4時点で最新である1.0.0-beta06に対応する。
– APIコールなどをこのバージョンの仕様に合わせる
– 通信やシリアライザを同一モジュール内に移す
– Android StudioについてArctic Fox Canary 15に対応する。
– その他諸々
– また、[このコメント](https://qiita.com/etctaro/items/a17681019c747f5e8b12#comment-2b9004a457801c

元記事を表示

[Android] RxJava + RetrofitでAPIをポーリング(状態変化を検出)したい。

題目の通りです。
RxJava + RetrofitでAPIをポーリングしたい。

> Retrofitで書いたSingleを返すgetStatusAPIがあり、
> これを叩くと状態statusが取れます。
> 状態が変わるまで5秒間隔でポーリングしたいのですがどうすれば良い?

自己解決したので、メモのためここに書きます。
Observable.interval() で指定した間隔で購読します。
Observable.take() は一定時間経過後に購読を停止します。
Observable.takeWhile() は条件が真のあいだ購読を継続します。

キモは Observable.takeWhile() の位置。
doOnNext() より前に書くと、状態が変わったとき、doOnNext()がよばれなくなります。

“`java:hoge.java
private void polling(String checkoutId, int interval, int timeout) {
Disposable disposable = Obse

元記事を表示

JAVA KeyStore 作成手順 (windows)

備忘録として記事にしました。

はじめに

Androidアプリをリリースする際、KeyStoreが必要になりました。
KeyStoreの作成手順を残しておきます。

JDKのインストール

・JDKのダウンロードをします
https://www.oracle.com/java/technologies/javase-downloads.html
![java001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223039/4e483ecf-cfca-a4d3-ca72-6b75cfc15142.png)

Windows x64 Installerをクリック
バージョン:jdk-16.0.1
![java002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223039/a047839d-6e13-e45c-1288-969e2ed88c68.png)

I reviewed and

元記事を表示

OTHERカテゴリの最新記事