public void normalReportHandler(Message msg) { Log.i(TAG, "normalReportHandler msg type " + msg.what); Intent cmd = null; long time_millis = 0; String strAreaName = SystemProperties.get("ro.product.starnetprovince"); if(player_cnt > 1 && "hebei".equals(strAreaName)){ Log.i(TAG, "msg_send fail : player_cnt " + player_cnt); return; }‘
时间: 2024-02-14 16:08:24 浏览: 22
这是 Android MediaPlayer 的一个普通报告处理器(normalReportHandler)方法。该方法会接收一个 Message 对象,根据 Message 对象的类型进行相应的处理。首先,它会打印日志记录消息的类型。然后,它会根据消息类型执行相应的操作,比如发送广播、更新播放状态、记录播放时间等。在这段代码中,如果系统属性 ro.product.starnetprovince 的值为 "hebei",并且当前的播放器数量 player_cnt 大于 1,则不执行后续操作,直接返回。这个判断可能是用于限制在某些地区同时播放多个视频的情况。
相关问题
package com.music.zds; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; import android.os.Message; import android.util.Log; import java.util.Timer; import java.util.TimerTask; public class MusicService extends Service { public static final String TAG="MusicService"; public MediaPlayer player; private Timer timer; public MusicService() { Log.d(TAG,"MusicService"); } @Override public void onCreate() { super.onCreate(); player=new MediaPlayer(); } @Override public IBinder onBind(Intent intent) { Log.d(TAG,"MusicService()"); return new MusicControler(); } public void addTimer(){ if(timer ==null){ TimerTask task = new TimerTask() { @Override public void run() { if(player == null) return;; int duration = player.getDuration(); int currentPro = player.getCurrentPosition(); Log.w(TAG,"duration:"+duration+",progress:"+currentPro); Message msg = MainActivity.handler.obtainMessage(); Bundle bundle = new Bundle(); bundle.putInt("duration",duration); bundle.putInt("progress",currentPro); msg.setData(bundle); MainActivity.handler.sendMessage(msg); } }; timer.schedule(task,5,500); } } class MusicControler extends Binder{ public void play(){ Log.d(TAG,"play"); try{ player.reset(); player=MediaPlayer.create(getApplicationContext(),R.raw.nianlun,R.raw.jimoyanhuo); player.start(); addTimer(); } catch (Exception e){ e.printStackTrace(); } } public void pause(){ Log.d(TAG,"pause"); player.pause(); } public void continueplay(){ Log.d(TAG,"continueplay"); player.start(); } public void seekTo(int progress){ Log.d(TAG,"seekTo"+progress); player.seekTo(progress); } } @Override public void onDestroy(){ super.onDestroy(); if (player == null) return;; if(player.isPlaying())player.stop(); player.release(); player=null; } }
这是一个 Android 应用程序中的 Service 类,用于播放音乐。它实现了 MediaPlayer 播放器,并提供了一个 Binder 类 MusicControler,用于控制音乐的播放、暂停、继续播放和进度调整等操作。在 onCreate() 方法中初始化了 MediaPlayer 对象,在 onBind() 方法中返回了 MusicControler 实例。在 addTimer() 方法中设置了定时任务,用于定时获取音乐的播放进度,并将进度信息通过 Message 和 Bundle 发送给 MainActivity。在 MusicControler 中的各个方法中调用了 MediaPlayer 对象的相应方法,用于控制音乐的播放进度。在 onDestroy() 方法中释放了 MediaPlayer 对象的资源。
修改以下代码public class MainActivity extends AppCompatActivity { private EditText number,content; private Button send; SmsManager smsManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取SmsManager smsManager = SmsManager.getDefault(); number = (EditText) findViewById(R.id.number); content = (EditText) findViewById(R.id.content); send = (Button) findViewById(R.id.send); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,new Intent(),0); Log.i("Main","Pengding"+ pendingIntent); String phone = number.getText().toString(); String msg = content.getText().toString(); smsManager.sendTextMessage(phone,null,msg,pendingIntent,null); Log.i("Main","smsmanager"); Toast.makeText(MainActivity.this,"发送成功",Toast.LENGTH_SHORT); } }); } }
您需要在Toast.makeText()方法中添加.show()才能够显示Toast提示信息,修改后的代码如下:
```
public class MainActivity extends AppCompatActivity {
private EditText number,content;
private Button send;
SmsManager smsManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取SmsManager
smsManager = SmsManager.getDefault();
number = (EditText) findViewById(R.id.number);
content = (EditText) findViewById(R.id.content);
send = (Button) findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,new Intent(),0);
Log.i("Main","Pengding"+ pendingIntent);
String phone = number.getText().toString();
String msg = content.getText().toString();
smsManager.sendTextMessage(phone,null,msg,pendingIntent,null);
Log.i("Main","smsmanager");
Toast.makeText(MainActivity.this,"发送成功",Toast.LENGTH_SHORT).show();
}
});
}
}
```
这样就可以在发送短信成功后弹出Toast提示“发送成功”了。