编写一个android studio程序实现在页面显示当前系统时间并在系统每小时整点时自动播放音乐的代码
时间: 2023-06-03 11:04:39 浏览: 187
Android studio Android寄存系统,登录注册,增删改查,sqlite
5星 · 资源好评率100%
以下是实现该功能的基本代码:
```
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
private TextView tvTime;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTime = findViewById(R.id.tv_time);
mediaPlayer = MediaPlayer.create(this, R.raw.music);
//使用Handler定时更新时间
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
//获取当前时间并更新TextView
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time = sdf.format(new Date());
tvTime.setText(time);
//每过一个小时播放音乐
if (time.endsWith("00:00")) {
mediaPlayer.start();
}
break;
}
}
};
//使用线程定时更新UI
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
```
解释一下代码:
1.在布局文件中添加一个TextView用于显示时间:
```
<TextView
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
android:gravity="center"/>
```
2.在MainActivity中初始化TextView和MediaPlayer,并使用Handler和Thread实现定时更新UI和播放音乐。其中,Handler用于在UI线程中更新TextView和播放音乐,Thread用于在子线程中不断地通过Handler更新UI。
3.在AndroidManifest.xml文件中添加如下权限,用于访问系统时间和播放音乐:
```
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
```
注意:
1.本代码使用MediaPlayer播放音乐,在播放前需要确认是否具有该音乐文件的访问权限,否则会出现FileNotFoundException。
2.在Android 9.0以上的版本中,不能使用上述权限,需要申请AndroidManifest.permission.READ_EXTERNAL_STORAGE和AndroidManifest.permission.ACCESS_MEDIA_LOCATION等权限。
3.上述代码加入到android项目中需要根据实际情况做适当的修改才能正常运行。
阅读全文