apk fileとは

発注したインドのエンジニアから、apkファイルが納品された。
なにこれ?

ほーーー すげー
—————
Android向けのアプリケーションをAndroid端末にインストールできる形式にパッケージにしたもの、もしくはそのファイルのこと。簡単にいうとapkとは「.apk」という拡張子を持つAndroidアプリケーションの本体ファイルのことである。ただし、apkファイル自体はZIP形式で圧縮されており、その中にはアプリケーションの動作に必要なさまざまなファイルが納められている。apkのファイル形式でなければAndroid端末にアプリケーションをインストールすることができないため、Google Playなどで配信されているアプリケーションは、すべてapkファイルとして公開されている。通常はGoogle Play等からAndroid用アプリケーションをダウンロード・インストールするが、端末の設定によってはインターネット上のWebサイトから直接apkファイルをダウンロードし、端末にインストールすることもできる。また、Androidアプリケーション「Root Uninstaller」を使用すると、すでにインストールされているアプリケーションのapkファイルを作成することも可能である。さらに、Androidアプリケーション「appsender」を使用すると、Androidアプリケーションのapkファイルをメールに添付して送信したり、EvernoteやGoogleDriveなどにも送ったりすることができる。アプリケーションを起動すると端末内のアプリケーションをスキャンし、メールソフトやクラウドを利用してapkファイルが送信される仕組みになっている。SDカード内のapkファイルを簡単に管理するためには、Androidアプリケーション「Apk Manager」が便利である。Apk Manager はSDカード内のapkファイルを自動的にリストアップし、簡単にインストール・アンインストールする事ができるため、Google Playにはないアプリケーションの管理も容易になる。
————–

android studioでapkファイルをopenすると、ファイルを開けるが、これでよいのか?

[Build]→[Generate Signed APK…] でapkファイルを作成できる、ってところまでわかった。

spinnerの値を12星座にする

app -> res -> values -> arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="items">
        <item>おひつじ座</item>
        <item>おうし座</item>
        <item>ふたご座</item>
        <item>かに座</item>
        <item>しし座</item>
        <item>おとめ座</item>
        <item>てんびん座</item>
        <item>さそり座</item>
        <item>いて座</item>
        <item>やぎ座</item>
        <item>みずがめ座</item>
        <item>うお座</item>
    </string-array>
</resources>

ちゃんと反映されています。

textViewを追加します。

ktのsetOnClickListenerの中で、spinnerの値を取得して、それ以外の値を配列からランダムに取得して表示させたいですな。

paletteのspinnerを使う

activity_main.xml

<Spinner
        android:id="@+id/spinner"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="269dp"
        android:entries="@array/items"/>

valuesにarrays.xmlを作ります。
app->res->values->arrays.xml
なぜ、「arrays」と複数形になるのでしょうか?命名規則がわかりませんが、とりあえず進みます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="items">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
        <item>item4</item>
        <item>item5</item>
        <item>item6</item>
        <item>item7</item>
        <item>item8</item>
        <item>item9</item>
    </string-array>
</resources>

とりあえず、spinnerは表示されましたが、相変わらずpositionが x, y:0, 0 になってしまいます。

activity_main.xmlでspinnerに”parent”を追加

<Spinner
        android:id="@+id/spinner"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="269dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:entries="@array/items"/>

そうそう、これ、やりたかったの^^

androidで恋愛運を占おう

kotolinで☆と★の配列をつくります。

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val l_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val n = Random().nextInt(results.count())
            val ln = Random().nextInt(l_results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            loveText.text = l_results.get(ln)
            // Code here executes on main thread after user presses button
        }
    }

では、続けて、仕事運、金運を作っていきましょう。

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val l_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val w_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val m_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val n = Random().nextInt(results.count())
            val ln = Random().nextInt(l_results.count())
            val wn = Random().nextInt(w_results.count())
            val mn = Random().nextInt(m_results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            loveText.text = l_results.get(ln)
            workText.text = w_results.get(wn)
            moneyText.text = m_results.get(mn)
            // Code here executes on main thread after user presses button
        }

こんなに占ってなにがしたいのかわかりませんが、OK!

次は相性のいい星座
ドロップダウンは、androidだと、「spinner」というらしいですね。

早速つかってみましょう。

なんじゃーこりゃー

androidからwindowsにubsで画像を送る

Use UBS for

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

        getOmikujiButton.setOnClickListener {
            Log.v("MainActivity", "Button Clilcked")

            // Code here executes on main thread after user presses button
        }
    }

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val n = Random().nextInt(results.count())

            resultTextView.text = results.get(n)
            // Code here executes on main thread after user presses button
        }

若干抵抗が少なくなってきました。

分岐処理

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val n = Random().nextInt(results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            // Code here executes on main thread after user presses button
        }

OK、では応用してみましょう。

textView, buttonTextのデフォルトvalueを変更する

app -> res -> values -> strings.xml
strings.xmlにvalueがsetされているので、この値を変更する

<resources>
    <string name="app_name">New</string>
    <string name="message_text">...</string>
    <string name="button_text">ボタン</string>
    <string name="textview">時間を表示します</string>
</resources>

textViewがかわりました。

kotolinを頑張らないと全然駄目ですが、少しandroidの構造がわかってきましたね♪
最低限の項目として以下は必要
1.AndroidのDB連携
2.APIを使ったサービスづくり
3.アプリの経験豊富なデザイナーと一緒にサービスを作る
4.ストア申請までもっていく

kotolin 文字列の連結

fun changeTextView(view: View){
        var calendar = Calendar.getInstance()
        val hour = calendar.get(Calendar.HOUR_OF_DAY)
        val minute = calendar.get(Calendar.MINUTE)

        messageTextView.text = "Hello android!"
        textView.text = "時間 ${hour.toString()}:${minute.toString()}"
    }