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

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

ASP.NET Coreで画像DBを作成してAndroidアプリと連携する

## TL;DR;
タイトルのとおりなんですけど、ASP.NET Coreを使って画像を登録したり取得したり出来るサービスを作成して、そこにAndroidアプリから画像をやりとりしようってやつです。
なお、この記事は[以前個人ブログで書いた記事](https://milkcocoa.info/2021/05/02/media_db_in_aspnet/)に修正加筆を行ったものです

## 動作の様子
この記事のまま作るとこんな感じの動作をします。
とはいってもアップロード/ダウンロードの流れが直に見えてるわけではないのナンノコッチャって感じですが。
![qiita.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600167/1b87208d-3314-c1c9-d181-ac42822868a7.gif)

##環境
環境はざっくり以下のとおりです。その他にもサーバ側やらクライアント側で個別に使ってるライブラリは提示します。

– Ubuntu 20.04
– .NET Core 3.1
– MySQ

元記事を表示

Android Studio 4.2 を更新したら起動しなくなったときの対処法

# はじめに

Android Studioを更新したら、起動しなくなった。
何回も調べて修正をしているのでメモ書きしておく

# TL;DR

Android Studioのインストール先にある`studio64.exe.vmoptions`を以下のように修正する

“`studio64.exe.vmoptions
-Xms256m
-Xmx1280m
-Xverify:none <= これを追加 -XX:ReservedCodeCacheSize=240m -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -Djna.nosys=true

元記事を表示

[Android]デフォルトのアクションバーとToolbar何がちゃうねん!

#デフォルトのアクションバーと何が違うの
どうもReoです。
以前、オリジナルアプリの作成中に、xmlファイルでToolbarを実装しました。
なんか、カスタム性強そうかなと思ってデフォルトのアクションバーを消しました。
そして、MainActivity上にFragmentが5つくらいの画面数だったのですが、全ての画面にそれぞれのアクションバーを設定するために、全画面のレイアウトファイルにToolbarを追加しました。

しかし、これはかなり冗長的なやり方でした。

どうやら、Activityで共有できる方法があるようです。

https://developer.android.com/training/appbar/setting-up?hl=ja

ちなみに、リファレンスにある通りデフォルトのアクションバーとToolbarの違いは、サポートライブラリの充実度です。
やはり、ただでさえ少ないAndroidユーザーですからw、しっかりとどの端末でも同じ機能を使えるように、Toolbarを使うべきですね。

実装方法は、ドキュメント通りなので割愛します。

#終わり
意外と知らなかった。

元記事を表示

Flutterでの広告ID取得に関して考える (Android/iOS)

最近、iOSではiOS14.5からApp Tracking Transparency(名称が長いのでこの先はATTと略す)に対応しないと完全にIDFAの取得ができなくなりました

iOS 14.5以上サポートしているアプリではATT対応はもちろん必要ですが、サードパーティ製の広告SDKを使わずに会社独自の広告配信基盤などを持っている場合は標準ライブラリを使って広告IDを取得するケースがあると思います (基本、広告SDKが内部的に広告IDをよしなに取得してくれてるイメージ)

両OS含めてFlutterで取得する場合はどうすればいいかと気になり、調べたので簡単にまとめてみます

# 環境
* Flutter 2.0.4
* Dart 2.12.2

# 広告ID取得のパッケージ
スコア高め(Pub Point 110 / Popularity 80以上)とNull Safety対応しているかの点で以下の2つかなと思いました

* [app_tracking_transparency](https://pub.dev/packages/app_tracking_transparency)

元記事を表示

Android 12 で更新された Widget についてセッションを見たメモ

Google I/O 2021 で発表された Android 12 の Widget についてセッションの動画 ( Refreshing widgets ) を見たメモです。

セッションの動画はこちら ↓

– Widget の基本的なこと
– Android Cupcake (1.5) で初めて登場
– アプリを起動しなくて情報を確認できるので便利
– ユーザの 84% が 1 つは Widget を利用しており、63% が複数の Widget を利用している
– Android 12 で大きく変更
– チェックボックス、スイッチ、ラジオボタンのサポート
– RemoteView から取ってくるのはこれまでどおり
– Material のアニメーションにも対応

“`

youは何しにDroidVimへ? – androidユーザー向けDroidVimとの付き合い方

# 俺とお前とDroidVim

まず、この記事は僕が備忘録として書いていたandroidアプリ[DroidVim](https://play.google.com/store/apps/details?id=com.droidvim)の[記事](https://qiita.com/astrorobot110/items/d76e7358cc35929e90ba)に関して、数件ながら言及があったのでちょっと更新しておこうというものです。具体的にはandroidのバージョンアップに伴い、当時のDroidVimとは少し設定の追い込み方が変わってきてしまったので、それを受けて「今DroidVimをどうしているか」ということを書き連ねておきます。で、今はどう使っているかというと……実はメモアプリ自体を[notion](https://www.notion.so)に乗り換えてしまっています。これは僕の仕事の内容が変わってしまい、取ったメモに対してその場で素早く計算をする必要がなくなる、もしくは計算が必要な時点でラップトップではExcelを開いているケースが増えたので必然的にvimでメモをして、ワ

元記事を表示

kotlin + coroutines + Okhttp3 を使って同期/非同期対応のHTTPクライアントを作ってみた

# 動機

– ググっても簡単に使えるHTTPクライアントが見つからなかったので、Okhttp3とcoroutinesを使って作ってみました

# HTTPクライアント

“`kotlin
import kotlinx.coroutines.*
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import org.json.JSONObject
import java.io.IOException

class HttpClient {
companion object {
val instance = OkHttpClient()

fun get(url: String): JSONObject {
val request = Request.Builder()
.url(url)
.

元記事を表示

Androidの不要アプリをadbコマンドからアンインストールしてみたメモ

Androidプリインストールアプリの通知をちまちま消していても再起動で復活するのを止めたい、裏で勝手に起動しているから電池が減ってるんだ(実際はそろそろ劣化かな)、と思ったりして、いろいろ調べてやってみた記録。
Android:Xperia XZ1 Compact SO-02K
PC: Windows10

## adbが使える環境づくり。
いくつかの参照サイト様でお勉強。特にわかりやすかったものを引用。
####PC側
操作するPC内にAndroidSudioをすでにダウンロードしていれば、その中のSDK Platform-Tools内にあるので、Pathを通せば使えます。

>adbコマンドを使えるようにする方法-ダウンロードして展開してパスを通すだけでOK
https://www.orefolder.net/2017/03/platform-tools/

今回、コマンドプロンプトのcdをPlatform-Toolsのフォルダにしないと認識しませんでした。必ずしもそれが必要かは不明。
(メインのローカルユーザー名に空白があるという痛恨のミスで保存場所が違ったりするためここは深追

元記事を表示

FirebaseにSHA1が登録できないのはOAuthClientが上限に達しているからかもしれない

# TL;DR

タイトルのとおりなんですが、Firebaseにアプリ署名鍵の `SHA256` は登録できるけど、 `SHA1` だけ登録できない場合はGCPのOAuthクライアントが上限に達しているかもしれません。確認してみましょう。

# なぜSHA1だけエラーになるの?

Firebaseでは、プロジェクト作成時にOAuthクライアントが作成されるわけではなく、`SHA1` のフィンガープリントが登録されたタイミングでOAuhtクライアントが作成されます。なので、OAuthクライアントが上限に達していると `SHA1` 登録時のOAuthクライアント作成が失敗し登録できないようです。

# 上限ってどれぐらい?

一概には言えないようですがとても低いようです。
[Google Cloud Console ](https://console.cloud.google.com/apis/credentials) にアクセスして対象のプロジェクトを確認して複数あるようなら使ってないやつを削除してみましょう。

# なんで上限低いの?増えないの?

OAuthの不正利用を避けるために増

元記事を表示

Roomデータベースファイルのエクスポート・インポートを行う雑な方法

Roomで管理するSQLiteのデータベースをエクスポートまたはインポートしたいときに、CSVの入出力を行うのが面倒なので、データベースファイルをそのままコピーするという方法を見つけた。

ほとんど何もバリデーションを行わないため、実際にリリースするアプリには怖くて使えないが、自分用のソフトウェアには問題なく利用できる。

実際に、RoomでデータベースをコピーするためのAPIがあれば良いのだが、簡単に動くものはなさそうだ。

# エクスポート
データベースを現在の状態で外部のURIにエキスポートしたい。

## 元のデータベースファイルの取得

`ApplicationContext`があれば、

“`java
File sourceFile = getApplicationContext().getDatabasePath(DATABASE_NAME);
“`

でdbファイルを取得できる。このときのDATABASE_NAMEはRoomDatabase.Builderでビルドするときに使った名前。

## WALのチェックポイント

RoomではWrite-Ahead Logg

元記事を表示

[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

元記事を表示

OTHERカテゴリの最新記事