20201014のAndroidに関する記事は5件です。

DatePickerをスピナー指定してもカレンダー部分が消えない(Tablet端末のみ?)

前提

  • エミュレータおよび実機で検証 (API 28以降)
  • htmlをWebViewで表示(Chrome for android)
  • DatePickerをスピナーのみの表示にしたかった
  • 結果的にスピナーのみの表示をあきらめています

input type="date"の表示

まずはデフォルト設定

Pixel 3a XLの場合

image.png

Nexus 10 の場合

image.png
デフォルト表示だとスマートフォンでもタブレットでも同様の表示

次にスピナーのみ表示する設定

    <item name="android:datePickerMode">spinner</item>
    <item name="android:calendarViewShown">false</item>

Pixel 3a XLの場合

image.png

Nexus10の場合

image.png
何この右の空間・・・

何が起きているのか

本来右の空間にはカレンダーが表示されるが、カレンダーを非表示にしたために
このような空間が生まれてしまったと思われる。
image.png

おわりに

泣く泣くDatePickerの使用をやめ、生年月日をリストで選択してもらうようにしました・・・

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Android: Wifiで開発、デバッグのメモ

  • Android Studio 4.0.1
  • Windows 10

Androidアプリの開発にて、Android端末と別の機器をUSBで接続して使う仕様でしたので、WiFi経由で実行、デバッグ、ログ出力をしました。

手順だけのメモとなります。

詳細は、参考にさせて頂いたこちらの記事をご参照ください。
AndroidアプリをWiFi経由でデバッグ
[Android]adbコマンドでunauthorizedが表示される

Android-PCをUSBケーブルで接続

[PC] Android Studioは立ち上げておく

[Android]開発者向けオプションをON, USBデバッグをON

[PC] AndroidのIPアドレスを調べる

powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe shell ip addr
実行結果
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 34:97:f6:7a:83:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.124/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::3697:f6ff:fe7a:83a8/64 scope link
       valid_lft forever preferred_lft forever

[PC] TCP/IPデバッグに切り替え

powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe tcpip 5555

ケーブルを抜く

[PC] TCP/IPで接続する

powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe connect 192.168.1.124:5555

[PC] 確認

powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe devices
実行結果
192.168.1.124:5555      device

うまくいかない場合

[Android]開発者向けオプションをOFF→ON, USBデバッグをOFF→ON

[PC] 終わるときは、USBデバッグに戻しておく

powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe usb
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AndroidのListViewに文字が表示されないとお怒りのあなたへ(<ーー私のこと)==>ArrayAdapterの使い方

1.きっかけ

 斎藤新三著『Androidアプリ開発の教書(Kotlin版)初版第2刷』のp109の「アクティビティ中のリストデータを生成する、ListViewSample2]を写経していた際、ListViewに文字が表示されない(正確には、表示されているが、バックグラウンドと(ほぼ)同色で見えない)事象を発見したので報告します。この事象はリストデータをstring.xmlに持つやり方では起こりませんでした。また確認した範囲では、エミュレータがAPIレベル24以上のときにはこの事象は起こりませんでした。
image.png

 どうでしょう?罫線と罫線の間にうっすらと文字が表示されているのが見えますか?(上の写真はAPIレベル19のもの)

 次の写真はAPIレベル30のものです。本当ならこのように表示されるよう期待していました。
image.png

2.ソースコード

2.1 レイアウトファイル

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvMenu"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

2.2 MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //ListViewオブジェクトを取得
        val lvMenu = findViewById<ListView>(R.id.lvMenu)

        // リストビューに表示するリストデータを作成
        var menuList = mutableListOf("A", "B", "C")

        //アダプタオブジェクトを生成する
        val adapter = ArrayAdapter(
                applicationContext,
                android.R.layout.simple_list_item_1,
                menuList)
        //リストビューにアダプタオブジェクトを設定
        lvMenu.adapter = adapter
    }
}

3.現象

 少し現象を調べたところ、OS(APIレベル)の違いで文字が(黒色で)表示できたりできなかったりするようです。

3.1 実機
 名称       OSバージョン     文字可読の可否
Huawei G628-TL    Android4.4.4      不可
Huawei Nova     Android7.0        可
(CAZ-TL10)

3.2 エミュレータ
 名称       APIレベル      文字可読の可否
Nexus4        19           不可
Nexus One       19           不可
Nexus 5X       21           不可
Nexus 5X       23           不可
Nexus 5X       24            可
Nexus 5X       27            可
Nexus 5X       28            可
Nexus 5X       29            可
Pixel3         30            可

4.原因

 エンジニアならばもっと深堀して原因を探るべきでしょうが、初心者なので先を急がさせてください。

5.対策

 コメント欄のgaeさんのご教示により、正しい対策方法が見つかりましたので、それを記述します。(以前記述していた対処方法はこの項の下部に見え消し状態で残しておきます。)
ArrayAdapterの第一引数をapplicationContextからthisに変更したところ、思い通りに表示するようになりました。

    //アダプタオブジェクトを生成する
    val adapter = ArrayAdapter(
            this,    // 変更点
            android.R.layout.simple_list_item_1,
            menuList)

また、AndroidApiのArrayAdapterのリファレンスには、次のように記述されています。

ArrayAdapter

public ArrayAdapter (Context context, int resource, T[] objects)
   Constructor.
   Parameters
   context Context: The current context. This value cannot be null.
   resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
   objects T: The objects to represent in the ListView. This value cannot be null.

 リファレンスに第1引数がThe current context(現在のコンテキスト)と書かれているので、gaeさんが言うアクティビティーのインスタンスとは、“this”のことだと判断しました。(またAndroidアプリ開発AndroidStudio3.0対応java版を読み返したところ、第1引数はthisになっていました。それではapplicationContextとは何者ぞ?と疑問が涌いてサクッと調べたら、「ApplicationContext派とActivityContext派の主張」などと言った具合に、難しい話のようなので頭の片隅に残し、今後の課題とします。)

 これで、思い通り表示されました。(実機Huawei G628-TL及びエミュレータAPIレベル19、21、23で確認済)
無題.png

(以下、対策が見つかる以前に記述していた対処方法を参考と履歴のために残しておきます。)
#5.対処方法
 バックグラウンドと文字の色を指定することにより表示が見えるようにしました。
本来ならば、MainActivity.ktの中に記述できると思いますが、その方法が見つからなかった(解決できなかった)ので、この方法でお茶を濁します。
 ただ、ひとつ気になるのが、色の指定がうまくできないことです。backgroundで指定した#000fffは青に近い色でまあまあ正しく表示しているのですが、文字の色を指定するtextColorの#f00000は赤に近い色のはずですが、表示上”白”で表示されます(どの色を指定しても白で表示されます)。今後MainActivityの中で文字の色指定する方法が見つかれば、きっと解決できると思います。

xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lvMenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/lv_menu"
android:background="#000fff"
android:textColor="#f00000"
/>

image.png

6.今後検討すべきこと

(1)今後MainActivityの中で文字の色指定する方法が見つける
(2)今回はArrayAdapterでこの現象が起きたが、SimpleAdapterやSimpleCursorAdapterでこの現象が起きるか
-->SimpleAdapterでも同様の現象が起きました(2020/10/15追記)。
(3)ApplicationContextとActivityContextとthisの違い

7.参考

 nyan のアプリ開発 Android & Kotlin ListView と ArrayAdapter 簡単なテキストリストの表示

8.動作環境

Android Studio 4.1
Build #AI-201.8743.12.41.6858069, built on September 24, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1237M
Cores: 8
Registry: ide.new.welcome.screen.force=true
Non-Bundled Plugins: com.thoughtworks.gauge

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AndroidのListViewに文字が表示されないとお怒りのあなたへ(<ーー私のこと)

1.きっかけ

 斎藤新三著『Androidアプリ開発の教書(Kotlin版)』のp109の「アクティビティ中のリストデータを生成する、ListViewSample2]を写経していた際、ListViewに文字が表示されない(正確には、表示されているが、バックグラウンドと(ほぼ)同色で見えない)事象を発見したので報告します。この事象はリストデータをstring.xmlに持つやり方では起こりませんでした。また確認した範囲では、エミュレータがAPIレベル24以上のときにはこの事象は起こりませんでした。
image.png

 どうでしょう?罫線と罫線の間にうっすらと文字が表示されているのが見えますか?(上の写真はAPIレベル19のもの)

 次の写真はAPIレベル30のものです。本当ならこのように表示されるよう期待していました。
image.png

2.ソースコード

2.1 レイアウトファイル

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvMenu"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

2.2 MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //ListViewオブジェクトを取得
        val lvMenu = findViewById<ListView>(R.id.lvMenu)

        // リストビューに表示するリストデータを作成
        var menuList = mutableListOf("A", "B", "C")

        //アダプタオブジェクトを生成する
        val adapter = ArrayAdapter(applicationContext,
                android.R.layout.simple_list_item_1,
                menuList)
        //リストビューにアダプタオブジェクトを設定
        lvMenu.adapter = adapter
    }
}

3.現象

 少し現象を調べたところ、OS(APIレベル)の違いで文字が(黒色で)表示できたりできなかったりするようです。

3.1 実機
 名称       OSバージョン     文字可読の可否
Huawei G628-TL    Android4.4.4      不可
Huawei Nova     Android7.0        可
(CAZ-TL10)

3.2 エミュレータ
 名称       APIレベル      文字可読の可否
Nexus4        19           不可
Nexus One       19           不可
Nexus 5X       21           不可
Nexus 5X       23           不可
Nexus 5X       24            可
Nexus 5X       27            可
Nexus 5X       28            可
Nexus 5X       29            可
Pixel3         30            可

4.原因

 エンジニアならばもっと深堀して原因を探るべきでしょうが、初心者なので先を急がさせてください。

5.対策

 コメント欄のgaeさんのご教示により、正しい対処方法が見つかりましたので、それを記述します。
ArrayAdapterの第一引数をapplicationContextからthisに変更したところ、思い通りに表示するようになりました。

    //アダプタオブジェクトを生成する
    val adapter = ArrayAdapter(
            this,    // 変更点
            android.R.layout.simple_list_item_1,
            menuList)

また、AndroidApiのArrayAdapterのリファレンスには、次のように記述されています。

ArrayAdapter

public ArrayAdapter (Context context, int resource, T[] objects)
   Constructor.
   Parameters
   context Context: The current context. This value cannot be null.
   resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
   objects T: The objects to represent in the ListView. This value cannot be null.

 リファレンスに第1引数がThe current context(現在のコンテキスト)と書かれているので、gaeさんが言うアクティビティーのインスタンスとは、“this”のことだと判断しました。

 これで、思い通り表示されました。
無題.png

(以下、対策が見つかる以前に記述していた対処方法を参考と履歴のために残しておきます。)
#5.対処方法
 バックグラウンドと文字の色を指定することにより表示が見えるようにしました。
本来ならば、MainActivity.ktの中に記述できると思いますが、その方法が見つからなかった(解決できなかった)ので、この方法でお茶を濁します。
 ただ、ひとつ気になるのが、色の指定がうまくできないことです。backgroundで指定した#000fffは青に近い色でまあまあ正しく表示しているのですが、文字の色を指定するtextColorの#f00000は赤に近い色のはずですが、表示上”白”で表示されます(どの色を指定しても白で表示されます)。今後MainActivityの中で文字の色指定する方法が見つかれば、きっと解決できると思います。

xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lvMenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/lv_menu"
android:background="#000fff"
android:textColor="#f00000"
/>

image.png

6.今後検討すべきこと

(1)今後MainActivityの中で文字の色指定する方法が見つける
(2)今回はArrayAdapterでこの現象が起きたが、SimpleAdapterやSimpleCursorAdapterでこの現象が起きるか

7.参考

 nyan のアプリ開発 Android & Kotlin ListView と ArrayAdapter 簡単なテキストリストの表示

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Androidアプリの申請。最初のリリース。「製品版としての公開を開始」ボタン押下でどうなる?

即公開 or 審査??

製品版をリリースする時に、必要な情報や、AppBundle or APKを用意すると最終的に以下の画面となります。「製品版としての公開を開始」ボタンを押すと、審査が入るのか、それとも即公開となるのかが気になりました。
実に、2年ぶりくらいのアプリ公開で、審査がApple並になってるとの事、プロモーションやマーケティングなどと並行する場合はタイミングが大事となりますので、実際にどうだったか簡単に載せます。

※リリースのレビュー → 製品版としての公開のようになります

1.リリースのレビューがある画面

ad_release01.png

リリースのレビューボタンを押下します

2.公開直前の画面となります。

製品版としての公開を開始ボタンがあります

ad_release02.png

製品版としての公開を開始ボタンを押下します

3.製品版としての公開を開始ボタンを押下すると…

審査中になります。即公開ではありませんので、気をつけましょう!

ad_qi_01.png

審査が24〜48時間くらいかかりまして、いつの間にか公開されていました。
iOSやiPadアプリと異なり、審査後に手動公開の様な方法は取れないようです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む