HSP3Dish(android)で、端末のスリープ(バックライト消灯)を無効化したい
atu 2013/7/2(Tue) 19:57:56|NO.55446
HSP3Dish(android)で、ゲームを作成中なのですが、
このゲームが起動している間、端末のスリープ(バックライト消灯)を無効化したいのですが、可能でしょうか?
もし可能であれば、やり方を教えてください。よろしくお願いします。
しまくろねこ(おにいさん) 2013/7/2(Tue) 23:33:30|NO.55456
こんにちわ。
私も気になったのでGoogleで検索してみました。
で、それらしいのを2つ程参考にしてみました。
画面を ON のままにする方法 - Android 開発入門
http://android.keicode.com/basics/how-to-keep-screen-on.php
AndroidManifest.xml の permission一覧 - [Androidアプリ/Android] ぺんたん info
http://pentan.info/android/app/permission_list.html
上の2つのサイトの情報を参考にしてみましたが結果としてHSPで出来るのかどうか分りませんでした。
やってみたことは以下です。
1. プロジェクトフォルダ内の『AndroidManifest.xml』に以下の1行を追加
<uses-permission android:name="android.permission.WAKE_LOCK"/> ←この行を追加
2. HSPのソースに以下の1行を追加
devcontrol "wake_lock", 1 ;←コントロールコマンド名やパラメータ値が不明なため適当です
devcontrol命令によりバイブレーター機能は動いているので恐らくdevcontrol命令を使うのだと思うのですが、コントロールコマンド名やパラメーター値が全く不明なため、どのように記述してよいのか分りませんでした。
また、Android版のプログラミングガイドを読み直してみましたが、現状ではバイブレーター機能しか実装されていないのでは?と思わせる記述がありましたので、もしかすると今現在ではバイブレーター機能以外はまだ出来ないのかも知れません。
『HSP3Dish android(NDK)版プログラミングガイド』 の 『デバイスコントロールについて』 から一部抜粋
> Androidデバイス上では、文字列として指定するコントロールコマンドは、以下を認識します。 (コントロールコマンドの文字列は、大文字小文字も含めて完全に一致する必要があります。)
> 認識しないコントロールコマンドを記述した場合もエラーは発生しませんので注意してください。
>
> コントロールコマンド 内容
> -------------------------------------------
> vibrate バイブ(振動)動作(パラメーター1)
devcontrol命令やdevprm命令の詳しい使い方が分るといいのですけどね。
mine 2013/7/3(Wed) 18:37:59|NO.55466
以下、別件で投稿しようとした内容ですが
便乗してみます。
おにたま様
HSP3Dish、楽しませてもらっています。
HSP3Dish AdMob addonですが、好奇心でやってみて、
AdMobを付けると、実機でスリープが効かずあせりました。
ネットで調べて、以下のファイルを修正したら
スリープが効くようになりましたので、報告?します。
プロジェクトのフォルダ以下の「src/tv/hsp/HspActivity.java」ファイルを編集します。
その中の
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
を
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
と修正し、ビルトしました。
注釈にも// Make your custom init here
と書いてありますが、一応、書き込みしてみました。
atu 2013/7/3(Wed) 21:02:11|NO.55469
ご回答、ありがとうございます。
>しまくろねこ(おにいさん)さん
試してみましたが、特に変化は無く通常どおりスリープに入ってしまいました。
私もGoogleで調べてみましたが、HSP3Dishで、スリープを無効にする方法は見つけられませんでした。
私はHSP以外の事は全く解らないので、HSP関係以外の記事は読んでませんが…
大人しく公式で実装されるのを待つしかないかもしれません…
>mineさん
AdMobを付けるとスリープにならなくなるバグがあるのですね。
おにたま(管理人) 2013/7/4(Thu) 23:23:04|NO.55496
>atu さん
スリープ無効化は現在のHSP3Dishでは機能として入っていません。
iOS側の対応はまだわかりませんが、androidについては今後のバージョンでサポートしたいと思います。
>しまくろねこ さん
色々と検索頂きありがとうございます。
現在のdevcontrol命令は、マニュアルに書かれている機能しか実装されていません。
将来的には、機能を追加していくのと、ユーザーがJavaの呼び出しを定義する形でシステム呼び出しを
記述できる仕組みを実現したいと考えています。
>mine さん
HSP3Dishについてのご報告ありがとうございます。
不具合については次のバージョンで修正させて頂きます。
atu 2013/7/5(Fri) 20:47:52|NO.55503
おにたま(管理人)さん、ご回答ありがとうございます。
やはり、まだサポートされていませんでしたか…
残念ですが、とりあえず諦めます。
サポートされるまで待ってますので、よろしくお願いします。
どうもありがとうございました。
mine 2013/7/10(Wed) 13:19:59|NO.55598
一応、やってみて動いたので、正式リリースまでの一時しのぎにどうぞ…
プロジェクト内のsrc/tv/hsp/HspActivity.javaファイルを修正します。
例えばプロジェクト名をsample1とします。C:\android\内にプロジェクトを作ってい
れば
C:\android\sample1\src\tv\hsp
の「HspActivity.java」の内容を変更します。
HspActivity.javaをテキストエディタ等で開き、編集します。
1.
import java.io.IOException;
の下あたりに
import android.view.WindowManager;
を追加します。
2.
最後の3行の
public native void nativepoke(int val, int val2);
}
の間に
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// // Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// // Keep screen off
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
を追加します。
-------こうなります。↓-------
public native void nativepoke(int val, int val2);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// // Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// // Keep screen off
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
------------------------------(最後の}は忘れないように…)
上書き保存して、これで、ビルトすれば、スリープしなくなりました。
スリープするように戻すには、
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
のように、clearFlags...側を有効にしてください。
プロジェクトの作成、ビルトは、hsp3.4βでやっています。
mine 2013/7/10(Wed) 17:41:08|NO.55602
書き込みがおかしかったですね。
//の位置がずれてしまいました。
もう一度HspActivity.javaファイルの修正から書き込みます。
HspActivity.javaをテキストエディタ等で開き、編集します。
1.
import java.io.IOException;
の下あたりに
import android.view.WindowManager;
を追加します。
2.
最後の3行の
public native void nativepoke(int val, int val2);
}
の間に
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//// Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//// Keep screen off
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
を追加します。
-------こうなります。↓-------
public native void nativepoke(int val, int val2);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//// Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//// Keep screen off
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
------------------------------(最後の}は忘れないように…)
これで、ビルトすれば、スリープしなくなりました。
スリープするように戻すには、
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
のように、clearFlags...側を有効にしてください。
プロジェクトの作成、ビルトは、hsp3.4βでやっています。
atu 2013/7/10(Wed) 21:02:25|NO.55604
mineさん、わざわざありがとうございます。
言われた通りにやってみたら、見事にスリープを無効にできました。
ゲームの操作説明等を表示した画面で、
読んでいる途中でスリープになってしまうので、困っている所でした。
エンドロール等でもスリープになると困るなぁと思っていましたが、
これで気にせずにアプリ開発を続けられます。
どうもありがとうございました。