stylesheet

ラベル android の投稿を表示しています。 すべての投稿を表示
ラベル android の投稿を表示しています。 すべての投稿を表示

2024-10-06

パスキー用のQRコード読み取りは標準カメラアプリで

QRコードリーダーによっては、パスキー用のQRコードに対応していない場合があります。
FIDOスキームURL(FIDO:/…)の扱いがアプリによって異なるため、別のQRコードリーダーを試すと解決することがあります。

例えば、Microsoft Launcherではブラウザが起動してしまい失敗しましたが、カメラアプリを使用すると成功しました。Galaxyの場合、カメラアプリの設定で「QRコードをスキャン」をONにしておくと、QRコードを正しく処理できます。

「パスキーうざい。メルカリ、PCからログインできない」となった記念にメモ。

2021-05-28

OPPO RENO A へ GCam アプリを導入

プリインのカメラアプリではおかしな色合いになることがおおかったので、GCamを導入してみた。

センサーについて

https://en.wikipedia.org/wiki/Exmor

メインカメラのセンサーはSony製Exmor RS IMX398。
OPPOとSonyの共同開発したとされるセンサーで、IMX298をベースにした1600万画素のイメージセンサー。 画素数は16MPで、センサーサイズは6.4mm (1/2.8")。RAW出力、位相差AFには対応するが、光学式手ブレ補正はなし。F値1.7の明るいレンズ。
スペック的には前モデルのIMX298から、位相差AFがデュアルコアAFと呼ばれている高速なものへアップデートされたぐらいのように見える。

IMX298を搭載したOnePlus3TとGCamの組み合わせで、そこそこ綺麗に取れていたので、センサーとしてのスジはそう悪くないはず。

GCamアプリについて

https://www.cyanogenmods.org/google-camera/

Google CameraアプリをGoogle製以外のアンドロイド端末向けに改変、機能追加したもの。
Play Storeでは配布されていない。
現行バージョンの8.xは、Android 11/10に対応している。Android 10以前の場合は、旧バージョンの7.xから探すことになる。

通常は機種ごとに専用のものをインストールすればよいが、"RENO A"に関しては、専用版は用意されていない。
また、センサー構成が同じと思われる機種("Oppo R17 Neo/K1"や"Oppo R15x"等)の専用版も見当たらないようだったので、 "Older Google Camera APK"に記載されているものを試して見た。

それぞれの結果は以下の通り。

Google Camera 7.3 and 7.4 by Arnova8G2:
起動するがすぐにクラッシュする。
Google Camera 7.3 and 7.4 by BSG:
画面を連続タップするとクラッシュするが、概ね動作する。
Google Camera 7.3 and 7.4 by Nikita:
ビューファインダーがコマ送り状態となり撮影できない。動画は動作するので、設定でなんとかなるかもしれない。
Google Camera 7.3 and 7.4 by Parrot043:
INSTALL_FAILED_OLDER_SDKでインストール不可。Android 10以降向け。
GCam 7.4 by PitbulL:
起動するがすぐにクラッシュ。Arnova8G2版と同じ。
GCam 7.3 by wyroczen:
起動するがすぐにクラッシュ。Arnova8G2版と同じ。
GCam 7.3 by Urnyx05:
画面を連続タップするとクラッシュするが、概ね動作する。BSG版と同じ。

多少不安定だが、実用できそうだったのが、BSG版とUrnyx05版。
現在はUrnyx05版を常用しているが、特に目立った問題には遭遇していない。

サンプル画像

GCamアプリを使用

Stockカメラアプリを使用

2019-06-25

OnePlus3T (A3010) の通話録音機能を有効化

Android 9ベースのOxygenOS 9.0.3でも機能したのでやり方をメモしておく。

$ settings put global op_voice_recording_supported_by_mcc 1
adb接続などでop_voice_recording_supported_by_mccフラグをOnにする

フラグを立てると"電話"アプリの設定にCall Record項目が表示される。

Call Record設定に入って通話録音の設定を行う。すべての通話を自動で録音するよう設定した。
この状態で電話を受けると自動で通話録音が開始された。当然、切ると録音終了。

録音した内容は"レコーダー"アプリで再生できる。
端末スピーカーでの通話は、受話・送話ともに正常に記録されていた。

再起動するとフラグがリセットされるので、起動時に毎回行う必要がある。
init.rcで行ってもよいが、よりカジュアルな方法としてMacroDoroidというアプリでマクロを作成した。

以上。
下手なアプリをインストールするよりよっぽど安定して使える。

2018-12-01

2018年度のAndroidアプリ開発に関して その2

久々にAndroidアプリを製作してみたら、太古の時代とはいろいろと状況が変わっていた話のその2。
今度は、大幅にパワーアップしたPlay Consoleに関して気になった機能を挙げていく。

App Signing (アプリの署名)

サーバー側でアプリへ署名を行う仕組み。
アップロードキーで署名してパッケージをアップロードするとサーバー側で配布用の鍵で署名し直してくれる。

厳重管理の配布用鍵を共有する必要がなくなるので運用が楽になる。組織にもよるが、アップロードキーはgitへ含めてしまって問題ないように思える。

Android App Bundle (アーティファクトライブラリ)

aab。以前のapkに変わるもの。

aabでアップロードすると、Google Play側で各端末に最適化(不要なリソースを削る等)したapkを生成してくれるので、ユーザーのダウンロードサイズを抑えることができる。 アプリの分割配信にも対応。

apkやaab等をまとめてアーティファクトと呼称するようになったようだ。また、(aabから生成したものではない)以前の形式のapkを、ユニバーサルAPKと呼ぶようになった。

リリース前レポート

テスト端末を使用した自動化された受入テスト(品質テスト)が行える。

Firebase Test Labの機能が一部取り込まれたようだ。Robo Scriptにも対応している。

アプリのリリース

トラック(配布チャンネル)が「内部テスト版トラック」「クローズドトラック(アルファ版)」「オープントラック(ベータ版)」「製品版トラック」の4つに整理された。

段階的に公開範囲を広げていくリリースシナリオに沿ったもののようだ。初版リリース前なら「内部テスト版トラック」を作成することで、ストア表示の確認にも使える。

ストア掲載情報のテスト機能

ストア表示のプレビュー機能が搭載されたか誤解したがそうではなく、ストア掲載情報に関してのA/Bテストが行える。(50%のユーザーに対しては別パターンの画像を表示等)
アプリのA/Bテストですらないので開発者が気にする類ではない。広告屋によるマーケティング担当に向けた機能。

以上、気になった機能を挙げてみた。

外部サービスが必要であったものもPlayコンソールで行えるようになっており、企業による本格的な開発におけるリリース管理全般に使えるような改善が行われている。
QAやマーケ担当に向けた機能が充実しており、以前は開発者が使うものといったイメージを持っていたが認識を改めたいと思う。

また、逆説的にそういった機能が必要となる程、今のアプリは多様な人材が必要で、組織立って多大なコストをかけて行う重いビジネスとなってしまったのだと感じてしまう。

戦略会議で意見表明するマーケティング担当

QAチームによる最終品質チェックの様子

2018-11-10

Androidアプリ開発の状況 (2018年度)

久々にAndroidアプリを製作してみたら、Lollipop時代とはいろいろと状況が変わっていたのでメモ。
以下、2018年版としてプラットフォームやよく使われるライブラリ等を表にしてみた。

2018年度Android開発

2014年頃
(Kitkat/Lollipop辺りまで)
2018年現在
(Nougat/Oreo/Pie)
備考
最低対応バージョン
(推奨)
Gingerbread
(API9)
Lollipop
(API21)
言語 Java6 Java8
Kotlin
Java8はAndroid7.0(API24)とそれ以前とで対応状況が異なる
DEXコンパイラ DX D8 Android Studio 3.1からD8がデフォルト
コード圧縮 ProGuard ProGuard
R8
次期バージョンのAndroid Studio 3.3からR8がデフォルトになる
デザイン Holo
Material
Material フラットデザイン2.0やMaterialTheming
ランチャーアイコン Bitmap画像 Vector画像 API25でRoundIcon
API26からAdaptiveIcons追加
基本レイアウト Relative Constraint
コンポーネント Support Library Jetpack JetpackでSupport LibraryとArchitecture Componentsが統合された
アーキテクチャ MVP MVVM Android Archtecture Components (AAC)のViewModel + DataBindingでMVVM
開発プラットフォーム Fabric Firebase Twitter社のFabricはGoogleへ売却された
ビューインジェクション Butterknife - DataBindingで代用
DI Guice Dagger2
イベント駆動 EventBus RxAndroid ViewModel + LiveDataだけで十分かも
HTTP通信 Volley Retrofit2
OkHttp3
画像ロード Volley Picasso
Glide
ラムダ式 Retrolambda - API24で不要

雑感

アーキテクチャ的に近年はMVVMがトレンドのようで、ViewModel + DataBinding + LiveDataあたりを組み合わせて実装する。

Kotlinに関してはクリエーターやデベロッパー色の強い開発者を中心に普及が進んでいるようだ。
ただ、SDKバージョンをAPI24まで上げるとJava8の多くの機能が使用できるので、Kotlinへのモチベーションは個人的にさがっている。

AndroidOSは毎年新しいメジャーバージョンがリリースされているが、Marshmallowあたりから個人的にはどうでも良くなってきた感がある。
最低SDKバージョンはLollipop(API21)が推奨されているようで普及率は85%となる。Java8の対応状況を考えるとNougat(API24)まで上げたいが、普及率は37.1%と苦しいところ。

尚、Nougatからがサポート中の現行バージョンとなり、Marshmallowまでは旧バージョン扱いとなっている。

参考リンク

2018-05-19

IP直打ちやhosts編集が面倒になったのでmDNSを設定しまくる

BonjourだとかzeroconfだとかmDNSの話。
閉じたネットワークで`ホスト名.local`でサーバーマシンにアクセスできれば満足。Service Discoveryとかはスルーの方向性で。

Linux (Debian系)

最初から入っているディストリも多いが、ホスト名を設定してavahi-daemonとlibnss-mdnsを入れるだけ。

avahi-daemonがresponderでlibnss-mdnsのほうがクライアントとして動作する。 ラズパイやオレンジパイも同じ。

$ sudo -e /etc/hostname
$ sudo apt install avahi-daemon libnss-mdns

Windows10

ネイティブサポートされているようだがファイアーウォールで止められている。UDPポート5353を開放すると使えるようになる。

面倒であれば、Bonjourをインストールするとファイアウォールが自動で構成されるので手っ取り早い。

ホスト名はコンピュータ名を使う。

MacOS, iOS

最初から使用可能。設定のローカルホスト名とか名前とかそこらへんでホスト名を決める。

esp8266

Arduinoスケッチの場合は、ESP8266mDNSライブラリをインクルードしてMDNS.beginをコールするだけ。

この類のマイコンでmdnsはかなり有用。

#include <ESP8266mDNS.h>
MDNS.begin("superhost");

Android

SDKでAPIは提供されているが、アプリ側で対応が必要。そして現状、chromeでは使えない。

スマホは公共ネットワークに接続することも多いだろうから、セキュリティ的に使えなくて正解かもしれない。

2018-03-31

OnePlus3Tのシステム更新メモ

op3tのシステムを新しくしたのでメモ。
stable版で固めたのでandroidは8.0(sdk26)と少し古めの構成。

システム構成:

  • Device: OnePlus3T (A3010)
  • ROM: oxygen v5.0.1
  • Kernel: blu_spark r215
  • Recovery: twrp_blu_spark v8.61
  • Root: magisk v16.0

ファイルの入手先:

Downloads - OnePlus.net
  • - OnePlus3TOxygen_28_OTA_062_all_1712272248_d28093577f324959.zip
[KERNEL] [blu_spark r32 unified] [OOS 4.0.* … | OnePlus 3T
  • twrp-3.2.1-x_blu_spark_v8.61-op3_op3t.img
  • blu_spark_r215-oos-oreo_op3-op3t_bc9e869.zip
[2018.3.18] Magisk v16.0 - Root & Universal Systemless Interface [Android 5.0+]
  • Magisk-v16.0.zip
  • MagiskManager-v5.6.3.apk

手順:

  1. oemロック解除
  2. recoveryからoxygen(zip)をインストール ※リカバリーがOxygenのものに上書きされてしまう
  3. fastbootモードにしてtwrp(img)をフラッシュ
    $ fastboot flash recovery twrp-3.2.1-x_blu_spark_v8.61-op3_op3t.img
  4. recoveryでmagisk(zip)、次にblu_spark(zip)をインストール
  5. MagiskManager(apk)をインストール

以上。

2017-12-30

OnePlus3TをTWRP/OxygenOS(oreo)/SuperSU構成でクリーンインストール

年の瀬なので、Android端末のOnePlus3Tも年末大掃除。 全てリセットして、Android8(Oreo)ベースのOxygenOSへ移行する。

  • osはoreo版のOxygenOS
  • リカバリーはTWRP
  • rootはSuperSU

全データを消去して端末のセットアップから始めるので事前にバックアップやメモは必要。しっかりNANDroid Backupしておく。

2017-10-12

mitmproxyでandroidの通信を改竄

mitmproxyはhttpsに対応したman-in-the-middle型のプロキシサーバー。
PC側でmitmproxyを起動してAndroid実機へプロキシ設定するだけでお手軽に通信を覗いたり改竄することができる。 Android端末にrootも不要なので、テストがとても捗る。

これでハイスコア更新したりありえない場所にワープしたりするのが流行ったとかなんとか。

2017-03-16

OnePlus3T 遭遇した問題と回避法覚書

OnePlus3Tで遭遇した問題と回避法をメモ。Romは公式OOSを使用。

マルチタッチが機能しない

oos独自機能のシステムジェスチャーが原因。
回避策: [設定] > [ジェスチャー] > [3本指のスクリーンショット]を無効に設定する。

WiFi 2.4GHzの接続速度が遅い

デフォルトで2.4GHz(のみ)はチャネルボンディングが無効に設定されている為、対応ルーターを使用してもバンド幅40MHzで接続できない。
回避策: システムの設定ファイルを編集して2.4GHzのチャネルボンディングを有効にする。(root必要)

/system/etc/wifi/WCNSS_qcom_cfg.ini

gChannelBondingMode24GHz=1

一時的に音量が小さくなる

音楽再生やゲームなどで一時的に音量が小さくなる。裏で迷惑な通知が届いてる。
回避策: [設定] > [音] > [デフォルトの通知音]をなしに設定する。または[設定] > [通知]からアプリごとに設定を変更する。

続く...

2016-12-31

OnePlus3T セットアップ中

本格的に使いはじめる前にROM焼き環境を整える。
ブートローダーのロック解除が簡単にできるので、セキュリティホールを突いてRootを取得したりする必要はない。

2016-11-15

xperia so-02fでバッテリーが急に0になる

Xperia so-02fでバッテリー残量が十分残っている状態なのに、突然シャットダウンが起こる現象に遭遇。

症状:
  • 60%位の残量でandroidが強制シャットダウン。
  • 充電ケーブルをつないでバッテリー残量を確認すると0%。
  • そのままAndroidを起動して残量を確認すると60%と表示。
  • 残量履歴を確認するとグラフが突然0%になっている。

Androidがバッテリー残量を正しく認識していない状態になっているようだ。 ようはバッテリー詐欺状態。

2015-09-17

MVNOでWIFIテザリングする件


最近のファームウェアではsettings put global tether_dun_required 0が効かないみたいなので、root必須になるけれどもbuild.propの書き換えでWiFiテザリングできるようにする。

2014-07-31

Androidアプリの画像シェアインテントの扱いを調べた

シナリオ

インテント送信元のアプリはプライベート領域上にPNG画像ファイルを保有しており、これを独自に実装したContentProviderを使用して外部アプリへ共有する。

調査方法としてアプリ内で以下のようなインテントを生成し、ContentProviderへのメソッド呼び出しをデバッガで調べた。


Intent i = new Intent(Intent.ACTION_SEND);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setType("image/png");
i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://__authority__/image/1"));

2013-10-01

IABv3: sharedUserIdを使用しているとエラー

sharedUserIdを使用しているアプリでin-app billing v3を使用すると例外が発生。

同じsharedUserIdを設定したアプリAとB

アプリAのみインストールした場合: 動作OK
アプリAとBをインストールした場合: InAppBillingServiceがエラーを返す

W/Finsky(20189): [27] InAppBillingService.validatePackageName: Package name ***.****.****** does not match the Uid
E/AS(27058): Problem setting up In-app Billing: IabResult: Error checking for billing v3 support. (response: 5:Developer Error)

不具合として承認されているが、半年ほど進展なし。

https://code.google.com/p/marketbilling/issues/detail?id=90

回避策

  • IABv2を使用するよう書き換える。
  • sharedUserIdを使用しない。

お。

追記

IABv2のサポート終了。この不具合は修正されているようです。

Beginning January 2015, we will end support for the In-app Billing Version 2 API. After this date, users will no longer be able to make in-app purchases using your app until you upgrade your app to use the Version 3 API.

2013-09-21

Androidナビゲーションバーにオーバーフローボタンを無理やり表示

レガシーアプリ互換性のためのアレ。targetSdkVersionをあげると表示されなくなるので、無理やり表示させてみる。
Androidアプリ開発ではよく使う?リフレクションを使用。setContentViewしてからWindowに隠しフラグをセットする。


public class HogeActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hoge);

        setLegacyOverflow(getWindow(), true);
    }


    void setLegacyOverflow(Window window, boolean enable) {
        try {
            int flag = WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null);
            if (enable) {
                window.addFlags(i);
            } else {
                window.clearFlags(i);
            }

        } catch (NoSuchFieldException e) {
            // 2.3以下はフラグなし

        } catch (IllegalAccessException e) {
            // 使えなくなった...
        }
    }
}

参考:

http://android-developers.blogspot.jp/2012/01/say-goodbye-to-menu-button.html

2013-05-18

sqlite3データベースの一括 vacuum & reindex シェルスクリプト

Androidを使い込んでもっさもっさしてきたら、バキュームとインデックス再作成でリフレッシュ。rooted端末ならシェルスクリプトで根こそぎバキューム。

続きは以下

2013-05-03

LinuxでもKVMを使用してAndroid Virtual Device (AVD)の高速実行

Windows or Mac の場合はIntel x86 Emulator Accelerator (HAXM)で実機以上の高速動作が可能なAndroidエミュレータですが、いつまで待ってもLinux用のHAXMがリリースされない訳で...。
どうもLinux環境ではKVMを使えということらしい。

Linuxの場合は、AMD(AMD-V)も対応。以下、導入手順。

2013-04-29

S51SEへZelly Cream 3.0を焼いたけど背景が...

S51SEへZelly Cream 3.0を焼いた。

Holo.Darkテーマの背景がアレなので、前バージョンの画像と置き換え

zipファイルをsdcardに配置して、CWRからzip更新。

update-framework-res-signed.zip

xperia launcherのドック背景も前バージョン風に変更

ランチャー設定>ドックバーから

home_stage_bg.png

追記 2013/5/16

最新バージョンZelly Cream 3.5ではHolo.Darkテーマの背景が戻っていた。framework-resの置き換えは不要。