[Service練習]音楽を再生させる

6/11の記事「[ToggleButton]ボタンのON/OFFが一目瞭然」
で作ったボタンに音楽再生・停止機能をつけてみました。

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.widget.Toast;

public class SoundControl extends Service {

  private NotificationManager mNM;
  MediaPlayer mp;

  @Override
  public IBinder onBind(Intent arg0) {
    return null;
  }

  @Override
  public void onCreate() {
    mp = MediaPlayer.create(this, R.raw.bgm);
    // 指定したリソースを再生するためのMediaPlayerを生成
  }

  @Override
  public void onStart(Intent intent, int startId) {
    try{
      mp.setLooping(true);   // ループを許可
      /*  mp.prepare();    // 準備(例外処理が必要)
      *   入れるとエラー。
      */
      mp.start();        // 再生
    }catch(Exception e){
      Log.d("xxxx","エラー発生"+e.getMessage());
    }
  }

  @Override
  public void onDestroy() {
    mp.stop();
    mp.release();

    Toast.makeText(this, "停止しました!", Toast.LENGTH_SHORT).show();
  }
}

MediaPlayerクラスのメソッド一覧
http://pentan.info/android/app/mediaplayer_method.html

作成方法参考
http://www.adamrocker.com/blog/213/android_play_music.html

prepare()でエラー↓ 1.5の場合ですが、MediaPlayer.createは内部でprepareを呼ぶので、アプリ側で明示的にprepareを呼んではならないようです。そのため、サンプルを動かすとIllegalStateExceptionになります。prepareを呼ばずにstartを呼ぶとうまくいきます。

作成方法
http://d.hatena.ne.jp/minghai/20080728/p2

    ↓いつもありがとうございます★ポチは更新の励みになります★↓
  • Twitter
  • にほんブログ村 鳥ブログ セキセイインコへ

[Eclipse]Serviceクラスの作り方

サービスとは・・・
アプリのバックグラウンドで動く仕組みを提供する機能らしいです。
具体的にはまたリンク集を後日作成します。

 

(っ´∀`)っ < 何か作業しながら音楽聴いたり。

(っ´∀`)っ < うーん。難しそう。

 

まずはEclipseでのServiceクラスの作り方から。

 

# Remort Serviceについて (+作り方)
 http://d.hatena.ne.jp/adsaria/20100917/1284692830

    ↓いつもありがとうございます★ポチは更新の励みになります★↓
  • Twitter
  • にほんブログ村 鳥ブログ セキセイインコへ

[ToggleButton]ボタンのON/OFFが一目瞭然

音楽再生/停止ボタンを通常のButtonで作るつもりでしたが
その隣に「off」って書いてあるViewを見つけまして 何ぞ?と思い調べてみました。

(っ´∀`)っ < 再生(ON) と 停止(OFF)の判定が分かりやすいです!

ToggleButton                    ToggleButton_OFF

# 参考サイト
ToggleButtonを使ってON/OFFを切り替える

    ↓いつもありがとうございます★ポチは更新の励みになります★↓
  • Twitter
  • にほんブログ村 鳥ブログ セキセイインコへ

[BroadcastReceiver]からActivityの起動

(っ´∀`)っ < うーん難しかったです。

# BroadcastReceiverを継承したクラス

    Intent it = new Intent(con,ShowMessage.class); // 明示的インテント
    it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   //★POINT★
    it.putExtra("MESSAGE",message);
    con.startActivity(it);

# 起動したいActivity(同じプロジェクト内に存在する)

    Bundle extras=getIntent().getExtras();
    if (extras!=null) {
        msg = extras.getString("MESSAGE");
    }else{
        Log.d("***msg**","メッセージなし");
    }

(っ´∀`)っ < できた!でも・・・謎。

(っ´∀`)っ <  setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); って何ぞ?

# Activityを新たに起動する時はこのフラグを立てないとActivityが起動しない。
http://d.hatena.ne.jp/eryngii_mori/20100520/1274357535 

なのでsetFlags(Intent.FLAG_ACTIVITY_NEW_TASK);を使う。
この引数を指定することで別タスクとして起動するように指定する。

(っ´∀`)っ < たすく?ラスク?おいしそうだね。

(っ´∀`)っ < 理解力が残念なワタクシにもう少し噛み砕いてほしい。

# 参考サイト(タスクについて)
http://news.livedoor.com/article/detail/5501359/

# 参考サイト(なぜ別タスクに?)
http://blog.imho.jp/2011/07/activityintent.html

=結論=

★下記のサイトによると、

Activity 以外から Intent で Activity を呼び出すには FLAG_ACTIVITY_NEW_TASK をセットする必要がある。

だそうです。メモメモ_((¢(・∀・ )

#  参考サイト
BroadcastReceiverからActivityをIntentで起動する

(っ´∀`)っ < 単刀直入に言っていただきました。

    ↓いつもありがとうございます★ポチは更新の励みになります★↓
  • Twitter
  • にほんブログ村 鳥ブログ セキセイインコへ

ランチャー表示名を変更

(っ´∀`)っ < 表示名をアプリケーション名からカッコイイ名前に変えたい!

ランチャー参考画像

ランチャー参考画像

# res-values-strings.xml

<string name=”app_name“>ぴよ~雨の日~</string>

# AndroidManifest.xml

<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name” >
<activity
android:name=”.xxxxxxxx”

というぐあいで「android:label」を変更すればよいよい。
まぁ通常はstring.xmlを参照してるから
<string name=”app_name”>~</string>の部分を変更ですわよ。

(っ´∀`)っ < ちなみに小鳥の画像が表示されるだけの平凡な練習アプリですの。

メモメモ_((¢(・∀・ ) 今度はランチャーの表示画像を変える方法を調べてみよう。

    ↓いつもありがとうございます★ポチは更新の励みになります★↓
  • Twitter
  • にほんブログ村 鳥ブログ セキセイインコへ
  プロフィール  PR:無料HP  妙高自動車学校  幼稚園 教諭  Webデザイン 専門学校  タナベ  中古ホイール 熊本  タイヤ エスティマ 新品  短期大学  激安中古ホイール  不動産 投資  教員免許 大学  株プロフェット 投資顧問  中古パーツ 旭川  名簿販売