2

ユーザーが次のようにサウンドを再生するときに管理できるように、サウンドを再生するためのこれらのファイルページの1つをhtmlファイルと呼ぶので、私はAndroidアプリを持っています:

土曜日 _

日曜 休み

月曜日 _

等々。私は自分のコードをうまくやりましたが、選択入力オプションの値をオンとオフに管理すると、アプリを閉じるか別のページに移動するとデフォルトに戻ります。問題は、ユーザーが選択した最初の選択オプションの値をどのように維持できるかということです。また、次のように特定の時間にサウンドを再生したい場合:

土曜日

午前5時30分 どうすればいいですか?

<再生音方式>

public class WebAppInterface    {
  Context mContext;
  public  MediaPlayer mp = null;
  public static boolean checked = false;
  /** Instantiate the interface and set the context */
  WebAppInterface(Context c) {
    mContext = c;
    mp = MediaPlayer.create(mContext,R.raw.sound);
  }


  @JavascriptInterface
    public void playsound(String value  ) {

      if (value.equals("on")){
        checked = true;

        mp.setLooping(true);
        mp.start();
      }
      else 
      {  
        checked = false;
        mp.stop();
      }
    }
}

HTML コード:

<html>
  <form >
    <select name="flip-1" id="flip-1" data-role="slider" onchange="getAzan(this)" >
      <option value="off" >play</option>
      <option value="on">off</option>
    </select>
  </form>

  <script type="text/javascript">
    function getAzan(sel) {
      var value = sel.options[sel.selectedIndex].value; 
      Android.playsound(value); 
    }
  </script>

:ユーザーがコードアップで値を選択すると、サウンドが再生されました

4

3 に答える 3

2

これらの値をデータベースに保存してみませんか? または、覚えておきたい設定の数が少ない場合は、ファイルをローカルに保存し、アプリケーションを起動するたびにそのファイルから読み取るだけです。

タイミングの質問に関しては、この投稿が、特定の時間に MediaPlayer をバインドするのに役立つと思います。

編集

   PrintWriter writer = new PrintWriter("nameTheFile.txt", "UTF-8");
   writer.println(name);
   writer.println(value);
   writer.close();

ファイルに書き込む必要があります。

次を使用して読み取ります。

String name;
Boolean value;

BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
    name=line;
value=Boolean.Parse(line);
}
于 2013-07-05T12:17:39.210 に答える
2

それらをファイルに保存するのではなく、に保存する方が良いと思いSharedPrefencesます。

SharedPreferences を使用するには、非常に簡単です。on値 (つまり:または)を取得したらoff、SharedPreferences を開いて、それらの値を入れます。

private void editPlayMonday(boolean shouldIPlay) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putBoolean("PlayMonday", shouldIPlay).commit();
}

値が設定されたら、曲を再生する必要があるかどうかを知りたい場合は、SharedPreferences をチェックして、その内容を調べます。

private void playSong() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    boolean shouldIPlay = prefs.getBoolean("PlayMonday", false);//false being the default value
    if(shouldIPlay) {
        //play song or whatever
    }
}

これで、毎日の設定でブール値を設定し、これらの値が今日の日付でオンかオフかを確認できます。

それが役立つことを願っています!

編集: そこで、プレーヤーを管理するためのキーと、いつサウンドを再生する必要があるかを説明しました。このeditPlayMonday機能を使用すると、サウンドを再生する必要があるときにアプリケーションに登録したりplaySong、曲を再生する必要があるかどうかを設定で確認したりできます。

ここで、アプリケーションでこれらの関数を使用し、JavaScript にリンクする必要があります。私はあなたにそれをやらせます、私はそれについて多くのチュートリアルとヘルプがあると確信しています(つまり: http://developer.android.com/guide/webapps/webview.html )

詳細を説明しなかった部分は//play song or whateverplaySong関数でもう少しトリッキーになるので、それで何をしたいのかをもう少し詳しく説明する必要があります。私があなたにアドバイスしたいのは、AlarmManagerクラスをチェックアウトすることです。アプリから簡単にイベントをスケジュールできます。詳細について はドキュメントを参照するか、実装方法についてはこのチュートリアルを参照してください。

要約すると、アプリケーションで行う必要があることは次のとおりです。

  • HTML スイッチを AndroideditPlay...機能にリンクして、曲を再生する必要があるときに登録できるようにします。
  • Web ビューを開いたときに、各日に対応する SharedPreference が true か false かを確認します。このようにして、さまざまな HTML スイッチを「オン」または「オフ」に変更できます。
  • このeditPlay...関数では、AlarmManager を使用して、スケジュールされた翌日のアラームをスケジュールする必要があります。これは曲にリンクされます。指定された日のブール値がまだ真である場合は、SharedPreference をチェックインすることを忘れないでください。間違った日に曲を演奏したくない...
于 2013-07-05T16:15:58.180 に答える
0

@MagicMicky で説明されているように、メソッドSharedPreferencesに値を格納するために使用できますonPause()

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    prefs.edit().putBoolean("Monday", true).commit();

で値を取得しますonResume()

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean check_monday=prefs.getBoolean("Monday",false); //false being default value

これで、ユーザーがアプリを終了したり、新しい に移動したりしても、データは保存されますactivity。アラームに関する限り、AlarmManager ここで別の例を使用して、アラームの必要性をチェックSharedPreferencesしてアラームをスケジュールします。つまり、アラームのスケジュールを設定しcheck_monday==trueます。

于 2013-07-11T19:59:34.580 に答える