Android関連のことを調べてみた2022年09月01日

Android関連のことを調べてみた2022年09月01日

OkHttpのレスポンスボディを文字列に変換しても文字化けするとき

ハマりました・・・

現象としては、Postmanを使ってもCURLを使ってもきちんとレスポンスボディが読めるのですが、なぜかOkHttpを使うと文字化けしてしまい、ボディをデシリアライズできませんでした。
結論から言うと、gzipという暗号化処理がされていたせいでした。

これを解決するには二通りの方法があります。

1. Encodingを許可しない(こっちは簡単ですがセキュリティ面でリスクがありそうです)
2. GZIPで復号する

## 1. Encodingを許可しない

これは簡単で、リクエストヘッダーから「Accept-Encoding」を削除してしまえば大丈夫かと。
例えばInterceptorなどを用いて

“`kotlin
val request = chain.request().newBuilder()
.removeHeader(“Accept-Encoding”)
.build()
val response = chain.proceed(request)
“`
リクエスト

元記事を表示

【Android】EditTextでエンター押下後フォーカスがループしない

# 不具合の事象
2個のEditTextを用意し、それぞれ`android:imeOptions=”actionNext”`を付与。
2個目のEditText内でエンターを押した場合、1個目のEditTextにフォーカスがループするときとしない時がある。

|ループする|ループしない|
|—-|—-|
|![normal.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/1d28500e-689f-b4a9-f833-87253b3a274b.gif)|![false.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/79fbbfdb-b6c1-0f4d-a1ce-3007960c6f77.gif)|

# 原因
画面内に`RecyclerView`があるとそれにフォーカスされるので、フォーカスがループされない。`Button`などの他のビューではフォーカスされず、`RecyclerView

元記事を表示

【自己責任】AndroidOSに疑似Linux環境(Termux)構築方法について。

数年ぶりにAndroid携帯電話を購入したため、その環境構築の一端を投稿するため、久しぶりに投稿する。

# AndroidOSに自己責任でTermuxをインストールする方法について。
野良ハブからインストールするため、自己責任が伴うことは大事な注意点である。

## 野良ハブとは。
今回は、[F-Droid](https://f-droid.org)のことで、Android向けのオープンソースソフトウェア(OSS)がまとめられている場所を指す。

## インストール
以後は携帯電話からの操作になる。

### 1.上記のURLから指定のアプリをダウンロードする。
[https://f-droid.org](https://f-droid.org)。

![1fdroid.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425551/bb10b03a-9731-a2b4-b323-2a90af7011fd.jpeg)

また、自己責任ではあるが、Google Playが安全かと言えばそんなことは無いため、

元記事を表示

vistaでandroid studio その8

# 概要
vistaでandroid studio 1.0.1やってみた。
AudioTrack使ってみた。

# 参考にしたページ

https://qiita.com/rild/items/339c5c36f4c1ad8d4325

# サンプルコード

“`
package com.ohisamallc.ohiapp154.ohiapp154;

import java.util.Arrays;

/**
* Created by ore on 22/08/30.
*/
public class Oscillator {
private double frequency = 440;
private double f0 = 280;
private double[] buffer;
private double t = 0;
private double sampleRate;
private Vowel targetVowel = Vowel.A;
public Oscillator(int bufferSize,

元記事を表示

vistaでandroid studio その7

# 概要
vistaでandroid studio 1.0.1やってみた。
AudioTrack使ってみた。

# 参考にしたページ

https://qiita.com/niusounds/items/beb0140117b9d3325ce7

# サンプルコード

“`
package com.ohisamallc.ohiapp154.ohiapp154;

/**
* Created by ore on 22/08/30.
*/
public class Oscillator {
private double frequency = 440;
private double[] buffer;
private double t = 0;
private double sampleRate;
public Oscillator(int bufferSize, int sampleRate) {
buffer = new double[bufferSize];
this.sampleRate = sampleRate;
}
public double[] n

元記事を表示

vistaでandroid studio その6

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
sin波を、表示せよ。

# 方針
– カスタムviewを、作る。

# 写真

![device-2022-08-29-172938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/eea7bdd5-35b2-0127-3ade-d49834b4a9ce.png)

# サンプルコード

“`
package com.ohisamallc.ohiapp154.ohiapp154;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

/**
* Created

元記事を表示

Android初心者の開発備忘録

# はじめに

 Androidのアプリ開発がしたかったものの、作ってみたいアプリにはroot化が必要であるということ以外、Androidについて何も知らなかったので、適当にAndroidを買いました。んで買ったのがSHARPのSHV45 AQUOSとかいう(未だに良いのかどうかも知らない)物でした。改めて調べていくと分かったことなのですが、

**やだ、SHARPちゃん、root化できない?**

 まぁ、そんなわけで泣く泣く普通に開発を頑張ろうとしたAndroid初心者の備忘録です。。。

# 開発者向けオプション

 Androidはまずは開発者オプションをオンにしなければ話が始まりません。
 というわけでその流れを一応説明しておきます。

歯車マークの設定アプリを開く

「デバイス情報」タブを開く

**「ビルド番号」と書かれた欄を連打しまくる**

USBデバッグモードをオンにする

 簡単ではありますが、初心者には案外見つからない操作でした。

# adbコマンドのインストール

 色んなサイトの参考にadbコマンドが使われているので、Windowsでシェルが使えるよ

元記事を表示

ローカルサーバでスマートフォンブラウザから端末の向きを検出する

## 結論から

httpsサーバじゃないといけない

カメラを利用するのにも必要だったので、以前の記事を参考に

https://qiita.com/tkyko13/items/1871d906736ac88a1f35

“`sh
$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
“`

で、鍵作ったあと

“`sh
$ http-server -S -C cert.pem
“`

or

“`js:server.js
const fs = require(‘fs’)
const express = require(‘express’);
const app = express();
const https = require(‘https’);
const options = {
key: fs.readFileSync(‘./key.pem’),
cert: fs.readFileSync(‘./cert.pem’)
};
con

元記事を表示

KotlinでJavamail4android(添付ファイルを添えて)

# きっかけ
よく使うので備忘録

# Gradle
“` Gradle
//javamail
implementation ‘com.sun.mail:android-mail:1.6.7’
implementation ‘com.sun.mail:android-activation:1.6.7’
“`

# コード
“` kotlin
private fun sendMail(
smtpServer: String, //SMTPサーバ
srcMailAddress: String, //自分のメールアドレス
password: String, //メールアドレスのパスワード
dstMailAddress: String, //相手先のメールアドレス
displayName: String, //相手先の表示名
subject: String, //メール件名
body: String,

元記事を表示

TensorFlowで学習したEfficientNetモデルをTensorFlowLiteに変換する

## はじめに

タイトルそのまま、TensorFlowで学習したEfficientNetのカスタムモデルを
TensorFlowLiteで扱えるように変換します。
なお、TensorFlowでの学習は本記事では扱わず、学習済みモデルの変換手順のみを記載します。

TensorFlowLiteとはざっくりいうと、
TensorFlowをAndroidやiOSなどのモバイル端末で動作できるようにするライブラリです。
詳細は[公式のガイド][tensor-flow-lite]を参照ください。
今回はAndroidデバイス上でモデルを動かしたかったので、Liteに変換することにしました。

やったことはほぼ公式ガイドに記載されていることですが、
いくつか躓きポイントがあったので、そちらも合わせてご紹介します。

また、今回はEfficientNetのモデルを対象としていますが、
TensorFlowで学習したモデルであれば、おそらく同じ手順で変換出来ます(未検証)。

## 変換手順

今回のモデルは

“`txt
~ / assests
/ variables
/ keras_m

元記事を表示

vistaでandroid studio その5

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
九九を実装せよ。

# 写真

![device-2022-08-29-094434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/1c92d2a5-d226-9750-0d6d-0297f48658d1.png)

# サンプルコード

“`
public void run(View view) {
TextView tv = (TextView) findViewById(R.id.chage);
String dis = “”;
for (int col = 1; col <= 9; col++) { for (int row = 1; row <= 9; row++) { if (col * row < 10) dis

元記事を表示

vistaでandroid studio その4

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
ズンドコを実装せよ。

# 方針

– 乱数 new Random

# 写真

![device-2022-08-29-093621.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/1b260ffa-9e2a-7560-1366-682ef11df84a.png)

# サンプルコード

“`
public void run(View view) {
TextView tv = (TextView) findViewById(R.id.chage);
final String success = “ズンズンズンズンドコ”;
final List zundoko = Arrays.asList(“ズン”, “ドコ”);
StringBuilder sb = new StringBuilder

元記事を表示

vistaでandroid studio その3

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
fizzbuzzを実装せよ。

# 方針

– textview,button,stringを使う。
– 剰余 %
– 文字列の加算 +=
– 数値の文字列化 String.valueOf

# 写真

![device-2022-08-29-092521.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/5c3c744a-f64c-e18c-fdda-b608f950a6f0.png)

# レイアウト

“`

元記事を表示

vistaでandroid studio その2

# 概要
vistaでandroid studio 1.0.1やってみた。
0.8.0消して、1.0.1入れた。

# インストール手順

ダウンロード

– android-studio-bundle-135.1641136.exe

# 写真

![studio.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/e0880171-dd93-d995-b8eb-9e31ae2ee970.jpeg)

# プロジェクト作成手順

1) 「新規 Android Studio プロジェクトの開始」をクリック

2) “アプリケーション名” / “会社ドメイン” を指定し「次へ」
アプリケーション名 : ohiapp154
会社ドメイン : ohiapp154.ohisamallc.com (任意のドメインを入力。以降自作するクラスのパッケージ名として利用される。)
プロジェクトのロケーション : 上記2項目から自動的に生成されるため、入力は不要

3) “スマホおよびタブレット” を指定し「次へ」

元記事を表示

Kotlin公式リファレンスにみる スコープ関数 を使う動機と使い分けのパターン

はっきりと区別して使い分ける必要もないと思います。

しかし、著名な開発者のコード、や Kotlin公式、Googleサンプルコードを見ていると、ある程度の使い分けは区別されてるように見えます。

ここでは、Kotlin 公式リファレンス がどのように案内しているか、をまとめてみます。

もちろん、例外は多くあり、同じ機能を満たしながらの記述の書き換えや入れ替えが可能ですが、公式はやはり本筋をついてるように見えます。

[? Scope functions | Kotlin](https://kotlinlang.org/docs/scope-functions.html)
[? Scope Functions – Kotlin Examples: Learn Kotlin Programming By Example](https://play.kotlinlang.org/byExample/06_scope_functions/01_let)
[? kotlin/Standard.kt · JetBrains/kotlin](https://github.com/JetBrai

元記事を表示

JetpackComposeとConstraintLayoutを組み合わせる

# Repositpory
https://github.com/yuka1324/recycler_view_to_compose

Branch name:recycler_view

# はじめに
xmlレイアウトにRecyclerViewを実装していた部分をJetpackComposeで書き換えました。
RecyclerViewを置き換えたってわけでもないので単にJetpackComposeでリストを作成したと思っていただければいいです。
xmlに組み込んだり内部でConstraintLayoutの制約を使ったりしています

# 環境
minSdk 26.
targetSdk 32.
Android Studio Chipmunk | 2021.2.1 Patch 1.
Kotlin 1.7.10.
Android Gradle Plugin Version : 7.2.1
Gradle Version : 7.3.3

# 初期設定
build.gradleに追加したものです

“`gradle
buildFeatures { // Enables Jetpack C

元記事を表示

[Android]アプリからURLを指定してインターネット通信を行うための準備

# はじめに
今回は アプリ内でURLを指定してインターネット通信を行う際の前準備の仕方を残します。
簡単なことですが、うっかり忘れてしまうとどんなにビジネスロジックを書いてもインターネット通信を行うことができないので覚えて起きたと思って記事に残します。

# 方法
AndroidManifest.xmlの内に

“`

“`
というパーミッション設定を指定します。
この一文を追加するだけです。

元記事を表示

Android 指定した文字をクリップボードにコピーする

今回は指定した文字をクリップボードにコピーする方法です。

ボタンを押した後に、特定の文字をコピーさせたい。みたいな場合に使用することができます。

“`MainActivity.kt
/**
* クリップボードにコピーする。
*
* @param context コンテキスト
* @param copyText コピーする文字列
*/
private fun copyClipboard(context: Context, copyText: String?) {
val clipboardManager: ClipboardManager = context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboardManager.setPrimaryClip(ClipData.newPlainText(“”, copyText))
}
“`

こちらでcopyTextに渡した文字がコピ

元記事を表示

ロケールによって小数点がピリオドかコンマかが変わるので数値⇔文字列変換に注意しよう

ロケールによって数値表現が変わるので注意しようってお話です
特にユーザー端末で実行されるアプリでは、様々なロケールでの動作を考慮する必要があります

日本語や英語では小数点に「.」(ピリオド)を使用するため、これ以外の表現が使われることを意識していない人も多いのではないでしょうか?イタリア、ドイツ、フランス、ロシア語などでは「,」(コンマ)が使われるため、変換時に「.」(ピリオド)が使われることを前提にしていると不具合になってしまう場合があります。

ということで、以下を実行してみましょう。

“`kotlin
fun main() {
Locale.setDefault(Locale.JAPAN)
println(“%.1f”.format(1.1))
println(1.1.toString())
println(“1.1”.toDoubleOrNull())
println(“1,1”.toDoubleOrNull())
println(DecimalFormat().parse(“1,1”).toDouble())

p

元記事を表示

【Flutter】navigation_bar の比較

## 初めに
Flutter には数多くのパッケージが存在し、どれを採用するか迷ってしまうほどです。
今回は navigation_bar に注目して、通常の BottomNavigationBar に加えて、 navigation_bar のパッケージのうち、特に Likes が多い三つを比較したいと思います。

## 準備
今回は以下の三つのパッケージを使用します。
+ [convex_bottom_bar](https://pub.dev/packages/convex_bottom_bar)
+ [curved_navigation_bar](https://pub.dev/packages/curved_navigation_bar)
+ [bottom_navy_bar](https://pub.dev/packages/bottom_navy_bar)

上記の三つのパッケージのバージョンを「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。

“`yaml: pubspeck.yaml
de

元記事を表示

OTHERカテゴリの最新記事