看到一个示例:代码我不COPY了。问题:private MIDIPlayer m_MIDIPlayer=null;小弟,水平低浅,在DOCS里也没找到个所以然来  。帮忙说说MIDIPlayer.感激不尽。

解决方案 »

  1.   

    我想知道,有没有MIDIPlayer这个类或者是借口。我没见过。
      

  2.   


    private MIDIPlayer m_MIDIPlayer=null;
    从你的代码里看肯定是有的啊!Android分phone 和 mid 2个版本的 也不能说2个版本 大家通常用phone开发 不把mid链接进去
    源码中有 在policy下
      

  3.   

    package com.Feier.android.Files;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.widget.TextView;public class Activity01 extends Activity {

    private MIDIPlayer m_MIDIPlayer=null;
    private boolean m_Music=false;
    private TextView m_TextView=null;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            m_TextView=(TextView)findViewById(R.id.TextView01);
            
            m_MIDIPlayer=new MIDIPlayer(this);
            /*读取文件数据*/
            load();
            
            if (m_Music){
             m_TextView.setText("当前音乐状态:开");
             m_Music=true;
             m_MIDIPlayer.PlayMusic();
            }
            else{
             m_TextView.setText("当前音乐状态:关");
            }
        }
        
        public boolean onKeyUp(int keyCode,KeyEvent event){
         switch (keyCode){
         case KeyEvent.KEYCODE_DPAD_UP:
                 m_TextView.setText("当前音乐状态:开");
                 m_Music=true;
                 m_MIDIPlayer.PlayMusic();    
                 break;
         case KeyEvent.KEYCODE_DPAD_DOWN:
         m_TextView.setText("当前音乐状态:关");
         m_Music=false;
         m_MIDIPlayer.FreeMusic();
         break;
         }
         return true;
        }
        
        public boolean onKeyDown(int keyCode,KeyEvent event){
         if (keyCode==KeyEvent.KEYCODE_BACK){
         /*退出应用程序时保存数据*/
         save();
         if (m_Music){
         m_MIDIPlayer.FreeMusic();
         }
         this.finish();
         return true;
         }
         return super.onKeyDown(keyCode, event);
        }
        
        /*装载、读取数据*/
        void load(){
         //构建Properties对象
         Properties properties=new Properties();
         try{
         //开发文件
         FileInputStream stream=this.openFileInput("music.cfg");
         //读取文件内容
         properties.load(stream);
         }
         catch(FileNotFoundException e){
         return;
         }
         catch(IOException e){
         return;
         }
         /*取得数据*/
         m_Music=Boolean.valueOf(properties.get("b_Music").toString());
        }
        
        /*保存数据*/
        boolean save(){
         Properties properties=new Properties();
         //将数据包打成Properties
         properties.put("b_Music", String.valueOf(m_Music));
         try{
         FileOutputStream stream=this.openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);
         //将打包好的数据写入文件中
         properties.store(stream, "");
         }
         catch(FileNotFoundException e){
         return false;
         }
         catch(IOException e){
         return false;
         }
         return true;
        }
    }
    呵呵,麻烦,你帮我看看。我也认为有。
    可我懂的不多。也找了SDK的DOCS。在里面居然没找到。
      

  4.   

    package com.Feier.android.Files;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.widget.TextView;public class Activity01 extends Activity {

    private MIDIPlayer m_MIDIPlayer=null;
    private boolean m_Music=false;
    private TextView m_TextView=null;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            m_TextView=(TextView)findViewById(R.id.TextView01);
            
            m_MIDIPlayer=new MIDIPlayer(this);
            /*读取文件数据*/
            load();
            
            if (m_Music){
             m_TextView.setText("当前音乐状态:开");
             m_Music=true;
             m_MIDIPlayer.PlayMusic();
            }
            else{
             m_TextView.setText("当前音乐状态:关");
            }
        }
        
        public boolean onKeyUp(int keyCode,KeyEvent event){
         switch (keyCode){
         case KeyEvent.KEYCODE_DPAD_UP:
                 m_TextView.setText("当前音乐状态:开");
                 m_Music=true;
                 m_MIDIPlayer.PlayMusic();    
                 break;
         case KeyEvent.KEYCODE_DPAD_DOWN:
         m_TextView.setText("当前音乐状态:关");
         m_Music=false;
         m_MIDIPlayer.FreeMusic();
         break;
         }
         return true;
        }
        
        public boolean onKeyDown(int keyCode,KeyEvent event){
         if (keyCode==KeyEvent.KEYCODE_BACK){
         /*退出应用程序时保存数据*/
         save();
         if (m_Music){
         m_MIDIPlayer.FreeMusic();
         }
         this.finish();
         return true;
         }
         return super.onKeyDown(keyCode, event);
        }
        
        /*装载、读取数据*/
        void load(){
         //构建Properties对象
         Properties properties=new Properties();
         try{
         //开发文件
         FileInputStream stream=this.openFileInput("music.cfg");
         //读取文件内容
         properties.load(stream);
         }
         catch(FileNotFoundException e){
         return;
         }
         catch(IOException e){
         return;
         }
         /*取得数据*/
         m_Music=Boolean.valueOf(properties.get("b_Music").toString());
        }
        
        /*保存数据*/
        boolean save(){
         Properties properties=new Properties();
         //将数据包打成Properties
         properties.put("b_Music", String.valueOf(m_Music));
         try{
         FileOutputStream stream=this.openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);
         //将打包好的数据写入文件中
         properties.store(stream, "");
         }
         catch(FileNotFoundException e){
         return false;
         }
         catch(IOException e){
         return false;
         }
         return true;
        }
    }呵呵,拜托了。DOCS里没找到。我对源码不感冒,水平低了。搞不凌清。
      

  5.   

    SDK里找不到的
     你要看源码的 framework/policy/....具体我忘记了 我不在办公室看不了源码我不是做应用的 所以没用过SDK 我一直作系统  
      

  6.   

    这个MIDIPlayer是自己写的一个类,具体代码如下:
    import java.io.IOException;import android.content.Context;
    import android.media.MediaPlayer;public class MIDIPlayer
    {
    public MediaPlayer playerMusic = null;
    private Context mContext = null;
    public MIDIPlayer(Context context)
    {
    mContext = context;
    } /* 播放音乐 */
    public void PlayMusic()
    {
    /* 装载资源中的音乐 */
    playerMusic = MediaPlayer.create(mContext, R.raw.start);

    /* 设置是否循环 */
    playerMusic.setLooping(true);
    try
    {
    playerMusic.prepare();
    }
    catch (IllegalStateException e)
    {
    e.printStackTrace();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    playerMusic.start();
    } /* 停止并释放音乐 */
    public void FreeMusic()
    {
    if (playerMusic != null)
    {
    playerMusic.stop();
    playerMusic.release();
    }
    }
    }
      

  7.   

    此外你可以看看《Android应用开发揭秘》第六章第一个例子!源代码在此下载http://product.china-pub.com/196305#xgzy