HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0702
atuHSP3Dish(android)で、端末のスリープ(バックライト消灯)を無効化したい8解決


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さん、わざわざありがとうございます。

言われた通りにやってみたら、見事にスリープを無効にできました。
ゲームの操作説明等を表示した画面で、
読んでいる途中でスリープになってしまうので、困っている所でした。
エンドロール等でもスリープになると困るなぁと思っていましたが、
これで気にせずにアプリ開発を続けられます。
どうもありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.