- 投稿日:2020-11-21T21:47:17+09:00
[Android]ホーム・ランチャーアプリとして起動できるようにする
Android では Home ボタンを押したときに特定のアプリを表示するようになっています。これを一般的にホームアプリやランチャーアプリと言います。例えば Microsoft Launcher などですねこれらをホーム・ランチャーアプリと呼びます。
ホーム・ランチャーアプリとして起動するには AndroidManifest.xml の Category に
android.intent .category.LAUNCHER
とandroid.intent.category.DEFAULT
を追加します。
android.intent.category.LAUNCHER
はこのアプリのカテゴリをランチャーアプリとするもので、android.intent.category.DEFAULT
は暗黙的インテントを受け取れるようにするものらしいです。android.intent.category.LAUNCHER
だけを設定すればランチャーアプリになるのではと思ってしまいますが、ランチャーアプリにするには暗黙的インテントを受け取れなければならないみたいです。<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.kaleidot725.sample"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Sample"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.Sample.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <!-- 追加 --> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.DEFAULT" /> <!---------> </intent-filter> </activity> </application> </manifest>AndroidManifest.xml を編集したらあとはアプリを起動するだけです。このとおりランチャーアプリとして認識され、Home ボタンを押したときに表示するようにできます。
- 投稿日:2020-11-21T19:07:39+09:00
【DroidScript】スマホでスマホアプリを作る シリーズまとめ
概要
DroidScriptというアプリを使うと、スマホからjavascriptベースの記述でスマホアプリを作れてしまうらしい。
DroidScriptでググっても日本語のサイトはあまりヒットしないし、Qiitaの記事もゼロ・・・面白そうなアプリなのに(´・ω・`)
以前にWEBアプリ導入の練習で「電子レンジワット数で加熱時間を換算するアプリ」を作り、今回も同じお題で練習してみたので、まとめてみた。
参照:【GAS】電子レンジワット数で加熱時間を換算するwebアプリを作ってみた
これまでのまとめ
スマホでスマホアプリを作る① Hello World!
DroidScriptの紹介と、サンプルアプリの実行。スマホでスマホアプリを作る② 背景やテキストの追加
オリジナルアプリ作成開始。背景画像やテキストの追加。スマホでスマホアプリを作る③ スピンボタンとシークバー
計算用の数字を取得するためのボタン設置。スマホでスマホアプリを作る④ 実行ボタン
取得した数字を元に計算実行。アプリ完成!自作アプリの動作
アプリの画面がこちら。
実際に動かしてみたところ。
自分のレンジのワット数を設定。温める対象のラベルに記載されたワット数と加熱時間を設定。計算ボタンをタップすると、自分のレンジで温める場合の加熱時間を教えてくれる。GIFには出てこないけど、ドロイド君をタップするとアプリの情報がポップアップする。
コード全文
function OnStart() { lay = app.CreateLayout( "linear", "VCenter,FillXY" ); lay.SetBackground( "/Sys/Img/BlueBack.jpg" ); txt = app.CreateText( "HOW MANY MIN" ); txt.SetTextSize( 22 ); lay.AddChild( txt ); img = app.CreateImage( "/Sys/Img/Icon.png", 0.1 ); img.SetMargins( 0, 0.02, 0, 0 ); img.SetOnTouchDown( img_OnTouchDown ); lay.AddChild( img ); txt = app.CreateText( "Your Microwave" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); my = app.CreateSpinner( "730,700,680", 0.3 ); my.SetOnTouch( spin_my ); lay.AddChild( my ); txt = app.CreateText( "Label Microwave" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); label = app.CreateSpinner( "500,1500", 0.3 ); label.SetOnTouch( spin_label ); lay.AddChild( label ); txt = app.CreateText( "Label heating time" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); skb = app.CreateSeekBar( 0.8 ); skb.SetOnTouch( skb_OnTouch ); skb.SetRange( 600 ); skb.SetValue( 180 ); lay.AddChild( skb ); btn = app.CreateButton( "EXECUTE", 0.4 ); btn.SetMargins( 0, 0.05, 0, 0 ); btn.SetOnTouch( btn_OnTouch ); lay.AddChild( btn ); app.AddLayout( lay ); } function img_OnTouchDown( ev ) { app.ShowPopup( "I will calculate the heating time!" ); app.Vibrate( "0,100,30,100,50,300" ); } function spin_my( item ) { app.ShowPopup( "Set " + item + "W" ); app.Vibrate( "0,30" ); } function spin_label( item ) { app.ShowPopup( "Set " + item + "W" ); app.Vibrate( "0,30" ); } function skb_OnTouch( value ) { value = Math.round( value / 5 ) * 5; var min = Math.floor( value / 60 ); var sec = Math.floor( value % 60 ); sec = ( "0" + sec ).slice( -2 ); var settime = min + ":" + sec; app.ShowPopup( "Set Time = " + settime ); app.Vibrate( "0,10" ); } function btn_OnTouch() { var my_wave = my.GetText(); var label_wave = label.GetText(); var time = skb.GetValue(); time = Math.round( time * 0.2 ) / 0.2; var ratio = ( label_wave / my_wave ); var after = time * ratio; var remain = after % 60; var newmin = ( after - remain ) / 60; var newsec = Math.round( remain ); newsec = ( "0" + newsec ).slice( -2 ); var ans = newmin + ":" + newsec; app.ShowPopup( "Heat for " + ans ); app.Vibrate( "0,100,30,100,50,300" ); }DroidScriptの操作Tips
PCでコード編集
左上のWiFiマークをタップすると、画面のような表示が表れる。
http://androidscript.org/ide
からアクセスして、伏字のIPアドレスとパスワードを入力すればPCからコードを編集できる。
スマホでコード編集
感覚的には、スマホでコピペしようと思ったらカーソル長押しなんだけど、こちらのアプリだと操作が異なるのが最初分からなくて苦労した・・・。
カーソルを操作する丸いアイコンをダブルタップすると、コピペなどのメニューが開く。これでサンプルコードから必要な部分をコピーすることができる。
以上!
おしまい
シリーズ
DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ
- 投稿日:2020-11-21T18:25:33+09:00
【DroidScript】スマホでスマホアプリを作る④ 実行ボタン
あらすじ
DroidScriptというアプリを使うと、javascriptベースの記述でスマホアプリが作れるらしいので、練習として「電子レンジワット数で加熱時間を換算するアプリ」を作る。
前回までのおさらい
スピンボタンとシークバーを実装し、計算に必要なデータ入力が揃った。あとは計算するだけ。
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバーボタンの設置
btn = app.CreateButton( "EXECUTE", 0.4 ); btn.SetMargins( 0, 0.05, 0, 0 ); btn.SetOnTouch( btn_OnTouch ); lay.AddChild( btn );
app.CreateButton
でボタンを作成。括弧内でボタンに表示する文字と、画面幅に対するサイズを設定。.SetMargins
で直前に設置したシークバーとの間隔を設定。.SetOnTouch
でタップしたときに呼び出す関数btn_OnTouch
を設定している。呼び出す関数のコードがコチラ。
function btn_OnTouch() { var my_wave = my.GetText(); var label_wave = label.GetText(); var time = skb.GetValue(); time = Math.round( time * 0.2 ) / 0.2; var ratio = ( label_wave / my_wave ); var after = time * ratio; var remain = after % 60; var newmin = ( after - remain ) / 60; var newsec = Math.round( remain ); newsec = ( "0" + newsec ).slice( -2 ); var ans = newmin + ":" + newsec; app.ShowPopup( "Heat for " + ans ); app.Vibrate( "0,100,30,100,50,300" ); }ついに自分のレンジでの加熱時間を計算。
スピンボタンやシークバーで操作した数字をどうやって拾ってくるのか分からなかったけど、操作後の状態から単純に参照できた。
スピンボタンで選んだ選択肢は
.GetText()
、シークバーで合わせた数字は.GetValue()
で参照。シークバーを操作した時に表示されるのが5秒間隔なので、計算するためにシークバーから参照した数字も5刻みに丸める。
あとはワット数の比で加熱時間を換算し、m:ss表示に加工して
"Heat for " + ans
でポップアップ、仕上げにapp.Vivrate
でスマホを振動させ達成感を味わう。
補足
スピンボタンの選択肢を
.GetText
で参照しているので、受け取った数字が文字列になっていると考えて、数字型に変更するためにNumber()
メソッドを使ったところエラーになってしまった。結局、そんなことしなくてもそのまま計算できてしまうみたい^^)b
次回
アプリ作成はこれにて終了。
次回はシリーズ目次的なまとめと、コード全文、DroidScriptのちょっとした使い方を紹介。
スマホでスマホアプリを作る シリーズまとめつづく
シリーズ
DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ
- 投稿日:2020-11-21T17:42:41+09:00
【DroidScript】スマホでスマホアプリを作る③ スピンボタンとシークバー
あらすじ
DroidScriptというアプリを使うと、javascriptベースの記述でスマホアプリが作れるらしいので、練習として「電子レンジワット数で加熱時間を換算するアプリ」を作る。
前回までのおさらい
アプリ画面の作成に着手。
前回は画像の上から2行目まで作成。タイトルテキストとドロイド君を設置、ドロイド君をタップするとスマホが振動してアプリの説明がポップアップするようにした。スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加スピンボタン(上下ボタン)の設置
txt = app.CreateText( "Your Microwave" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); my = app.CreateSpinner( "730,700,680", 0.3 ); my.SetOnTouch( spin_my ); lay.AddChild( my ); txt = app.CreateText( "Label Microwave" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); label = app.CreateSpinner( "500,1500", 0.3 ); label.SetOnTouch( spin_label ); lay.AddChild( label );スピンボタンは2つ。自分のレンジのワット数と、温める対象のラベルに記載されたワット数。それぞれスピンボタンの前にテキストとマージンを挿入している。
app.CreateSpinner("選択肢,選択肢,・・・",幅);
で設定。幅は画面幅を1.0として記述する。自分のレンジは、自宅で使っている730Wと、職場の700W、たまに使う680Wを選択できるように設定。ラベルのワット数は500Wと1500Wを用意した。
それぞれ、スピンボタンでワット数を選択した時の関数を作成し.SetOnTouch()
で呼び出している。呼び出される関数がこちら。function spin_my( item ) { app.ShowPopup( "Set " + item + "W" ); app.Vibrate( "0,30" ); } function spin_label( item ) { app.ShowPopup( "Set " + item + "W" ); app.Vibrate( "0,30" ); }選択したワット数が引数になる。例えば、
700
を選ぶとSet700W
とポップアップし、app.Vibrate
で少し振動する。シークバーの設置
txt = app.CreateText( "Label heating time" ); txt.SetMargins( 0,0.02,0,0 ); txt.SetTextSize( 20 ); lay.AddChild( txt ); skb = app.CreateSeekBar( 0.8 ); skb.SetOnTouch( skb_OnTouch ); skb.SetRange( 600 ); skb.SetValue( 180 ); lay.AddChild( skb );
app.CreateSeekBar
でシークバーを作成。括弧内で画面に対する幅を設定。
.SetRange
でシークバーの最大値、.SetValue
で初期値を設定している。ここで設定するのは電子レンジの加熱時間なので、最大値を600秒、初期値を180秒にしてみた。シークバーを操作した時に呼び出される関数がこちら。
function skb_OnTouch( value ) { value = Math.round( value / 5 ) * 5; var min = Math.floor( value / 60 ); var sec = Math.floor( value % 60 ); sec = ( "0" + sec ).slice( -2 ); var settime = min + ":" + sec; app.ShowPopup( "Set Time = " + settime ); app.Vibrate( "0,10" ); }0~600までの数字をそのまま表示させるのではなく、加熱時間っぽく加工してみた。
1秒単位で細かく刻む必要はないので5秒単位に数字を丸め、m:ss表示ができるよう分と秒に分け、10秒未満でも2桁で表示するように加工した。
次回
計算実行ボタンを作成する。
スマホでスマホアプリを作る④ 実行ボタンつづく
シリーズ
DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ
- 投稿日:2020-11-21T16:28:11+09:00
【DroidScript】スマホでスマホアプリを作る② 背景やテキストの追加
あらすじ
DroidScriptというアプリを使うと、javascriptベースの記述でスマホアプリが作れるらしいので、練習として「電子レンジワット数で加熱時間を換算するアプリ」を作る。
前回のおさらい
ボタンをタップすると「Hollo World!」と表示されるサンプルアプリのコードを見た。
スマホでスマホアプリを作る① Hello World!どうやら
lay
にパーツを放り込むことでアプリの画面をレイアウトできそう。function OnStart() { lay = app.CreateLayout( "linear", "VCenter,FillXY" ); app.AddLayout( lay ); }と言うわけで、自作アプリに向けてレイアウトを作成していく。
まずは完成画面
絶望的な英語力や配置センスは気にしないでいただきたい(ToT)
上から
・タイトル
・ドロイド君
・自分のレンジのワット数
・温める対象のラベルに記載されたワット数
・温める対象のラベルに記載された加熱時間
・計算ボタン
となっている。背景とタイトル
lay = app.CreateLayout( "linear", "VCenter,FillXY" ); lay.SetBackground( "/Sys/Img/BlueBack.jpg" ); txt = app.CreateText( "HOW MANY MIN" ); txt.SetTextSize( 22 ); lay.AddChild( txt );1行目で
lay
の基本設定。括弧内の記述はサンプルコードのコピペなのでよくわからん^^;
lay.SetBackgroud
で背景を設定。最初から用意されているBlueBack.jpg
を使用。タイトルの「HOW MANY MIN」というテキストを作りAddChildした。
ドロイド君
img = app.CreateImage( "/Sys/Img/Icon.png", 0.1 ); img.SetMargins( 0, 0.02, 0, 0 ); img.SetOnTouchDown( img_OnTouchDown ); lay.AddChild( img );こちらも最初から用意されているドロイド君のアイコン
Icon.png
をAddChild。.SetMargins
で、その前にAddChildしたパーツとの間に間隔を設ける。.SetOnTouchDown
で、パーツをタップした時に呼び出す関数img_OnTouchDown
を設定した。ドロイド君をタップしたら呼び出される関数がこちら
function img_OnTouchDown( ev ) { app.ShowPopup( "I will calculate the heating time!" ); app.Vibrate( "0,100,30,100,50,300" ); }何のアプリか簡単な説明をポップアップさせ、
app.Vibrate
でスマホを振動させる。
app.Vibrate
の括弧内は、("休止,振動,休止,振動,・・・")
で、数字はミリ秒となっているみたい。次回
ワット数や加熱時間を入力する部分を作成する。
スマホでスマホアプリを作る③ スピンボタンとシークバーつづく
シリーズ
DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ
- 投稿日:2020-11-21T13:46:09+09:00
【DroidScript】スマホでスマホアプリを作る①
概要
DroidScriptと言うスマホアプリがある。
javascriptを記述して、オリジナルアプリが作れてしまうらしい。しかもスマホで(そりゃあスマホアプリなんだからそうなんだろうけど何か衝撃)。
GASを覚えたことで、javascriptなら行けんじゃね?と、ちょっと触ってみることにした。
DroidScript
Playストアから入手可能。
サンプルコードが大量にあるためヒントは多いけど、コードの記述の方法とか、専用のメソッドを解説しているサイトが少なくて手探りになりそう・・・。
サンプルコードを見ると、横スクロールのゲームやらメディアプレイヤーやらある他、カメラ、メール、USBなどなど、出来ることがかなり多い。
アプリの画面をPCに表示させる方法もあって、スマホでコチコチやらなくてもコード入力できるみたい。
基本操作は全て無料!プラグインが豊富で、APKファイルへのビルドやブルートゥース対応など、一部のプラグインが有料になっている。
目的
以前に、WEBアプリ導入の練習で「電子レンジワット数で加熱時間を換算するアプリ」を作ったので、今回も同じお題で練習してみる。
参照:【GAS】電子レンジワット数で加熱時間を換算するwebアプリを作ってみた
Hello World!
何事もハローワールド!から。
アプリをインストールしたところ、最初にサンプルアプリが用意されていたので起動してみた。
画面にはドロイド君と「Press Me」と書かれたボタンが1つ(左画像)。ボタンをタップすると「Hello World!」と画面に表示された(右画像)。コードを表示させたところこんな感じ。
//Called when application is started. function OnStart() { //Create a layout with objects vertically centered. lay = app.CreateLayout( "linear", "VCenter,FillXY" ); //Create image 1/5 of screen width and correct aspect ratio. img = app.CreateImage( "Img/Hello World.png", 0.2, -1 ); lay.AddChild( img ); //Create a button 1/3 of screen width and 1/10 screen height. btn = app.CreateButton( "Press Me", 0.3, 0.1 ); btn.SetMargins( 0, 0.05, 0, 0 ); lay.AddChild( btn ); //Set function to call when button pressed. btn.SetOnTouch( btn_OnTouch ); //Add layout to app. app.AddLayout( lay ); } //Called when user touches our button. function btn_OnTouch() { //Show a popup message. app.ShowPopup( "Hello World!" ); }英語は読めないけど、どうやら
OnStart()
がアプリを開いたときに呼び出される関数みたい。
app.CreateLayout
で宣言したlay
に.AddChild
で表示させたいアイテムを放り込み、app.AddLayout
でアプリに渡してるんだなぁ・・・とか、
btn.SetOnTouch( btn_OnTouch )
でボタンがタップされた時の関数を呼び出してるみたいだなぁ・・・とか、
function btn_OnTouch()
では、app.ShowPopup
でメッセージがポップアップするんだろうなぁ・・・など、何とか分かりそう。
次回
自作アプリの初期画面を作ってみる。
つづく
- 投稿日:2020-11-21T13:46:09+09:00
【DroidScript】スマホでスマホアプリを作る① Hello World!
概要
DroidScriptと言うスマホアプリがある。
javascriptを記述して、オリジナルアプリを開発できるらしい。しかもスマホで!そりゃあスマホアプリなんだからそうなんだろうけど何か衝撃。
GASを覚えたことで、javascriptなら行けんじゃね?と、ちょっと触ってみることにした。
DroidScript
Playストアから入手可能。
サンプルコードが大量にあるためヒントは多いけど、ググっても日本語のサイトはあまりヒットしないし、Qiitaの記事もゼロ・・・操作は手探りになりそう(´・ω・`)
サンプルコードを見ると、横スクロールのゲームやらメディアプレイヤーやらある他、カメラ、メール、USBなどなど、出来ることはかなり多い。
アプリの画面をPCに表示させる方法もあって、スマホでチマチマやらなくてもキーボードでコード入力できるみたい(ちな、今回は全てスマホから操作)。
基本操作は全て無料!プラグインが豊富で、APKファイルへのビルドやブルートゥース対応など、一部のプラグインが有料になっている。
目的
以前に、WEBアプリ導入の練習で「電子レンジワット数で加熱時間を換算するアプリ」を作ったので、今回も同じお題で練習してみる。
参照:【GAS】電子レンジワット数で加熱時間を換算するwebアプリを作ってみた
Hello World!
何事もハローワールド!から。
アプリをインストールしたところ、最初にサンプルアプリが用意されていたので起動してみた。
画面にはドロイド君と「Press Me」と書かれたボタンが1つ(左画像)。ボタンをタップすると「Hello World!」と画面に表示された(右画像)。コードを表示させたところこんな感じ。
//Called when application is started. function OnStart() { //Create a layout with objects vertically centered. lay = app.CreateLayout( "linear", "VCenter,FillXY" ); //Create image 1/5 of screen width and correct aspect ratio. img = app.CreateImage( "Img/Hello World.png", 0.2, -1 ); lay.AddChild( img ); //Create a button 1/3 of screen width and 1/10 screen height. btn = app.CreateButton( "Press Me", 0.3, 0.1 ); btn.SetMargins( 0, 0.05, 0, 0 ); lay.AddChild( btn ); //Set function to call when button pressed. btn.SetOnTouch( btn_OnTouch ); //Add layout to app. app.AddLayout( lay ); } //Called when user touches our button. function btn_OnTouch() { //Show a popup message. app.ShowPopup( "Hello World!" ); }英語は読めないけど、どうやら
OnStart()
がアプリを開いたときに呼び出される関数みたい。
app.CreateLayout
で宣言したlay
に.AddChild
で表示させたいアイテムを放り込み、app.AddLayout
でアプリに渡してるんだなぁ・・・とか、
btn.SetOnTouch( btn_OnTouch )
でボタンがタップされた時の関数を呼び出してるみたいだなぁ・・・とか、
function btn_OnTouch()
では、app.ShowPopup
でメッセージがポップアップするんだろうなぁ・・・など、何とか分かりそう。
次回
次回から自作アプリの作成。
スマホでスマホアプリを作る② 背景やテキストの追加つづく
シリーズ
DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ