123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- package com.jyc.threegames.activity;
- import android.annotation.SuppressLint;
- import android.app.Dialog;
- import android.app.KeyguardManager;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.res.AssetFileDescriptor;
- import android.media.AudioManager;
- import android.media.MediaPlayer;
- import android.media.Ringtone;
- import android.media.RingtoneManager;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.PowerManager;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.view.WindowManager;
- import android.widget.RadioGroup;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AlertDialog;
- import androidx.constraintlayout.widget.ConstraintLayout;
- import com.jyc.threegames.App;
- import com.jyc.threegames.R;
- import com.jyc.threegames.activity.base.BaseActivity;
- import com.jyc.threegames.bean.ControllerMessage;
- import com.jyc.threegames.bean.result.ResGameInfo;
- import com.jyc.threegames.controller.GameController;
- import com.jyc.threegames.controller.LoginController;
- import com.jyc.threegames.net.SimpleRequest;
- import com.jyc.threegames.utils.ToastUtil;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Locale;
- import java.util.Timer;
- import java.util.TimerTask;
- import butterknife.BindView;
- import butterknife.OnClick;
- import timber.log.Timber;
- public class RingActivity extends BaseActivity {
- private static final String PARAM_GAME_INFO = "info";
- @BindView(R.id.label)
- TextView mTVLabel;
- @BindView(R.id.hint)
- TextView mTVHint;
- @BindView(R.id.root_ring)
- ConstraintLayout mCLRootRing;
- @BindView(R.id.root_delay)
- ConstraintLayout mCLRootDelay;
- @BindView(R.id.root_over_time_scale)
- ConstraintLayout mCLOverTimeScale;
- @BindView(R.id.delay_group)
- RadioGroup mRGDelay;
- private ResGameInfo mGameInfo;
- private boolean mGoToGameOrScale = false;
- private int mCurrentVolume = 0;
- private Ringtone mRingTone;
- private boolean mFirstDelay = true;
- @Override
- protected void init(Bundle instance) {
- super.init(instance);
- Logger.i("enter RingActivity");
- App.CAN_PLAY_GAME = false;
- if (instance == null)
- mGameInfo = getIntent().getParcelableExtra(PARAM_GAME_INFO);
- else
- mGameInfo = instance.getParcelable(PARAM_GAME_INFO);
- if (mGameInfo == null){
- finish();
- return;
- }
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1)
- setTurnScreenOn(true);
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
- keyguardManager.requestDismissKeyguard(this, null);
- }
- maxVolume();
- playRing();
- if (mGameInfo.playGameType == ResGameInfo.GAME_TYPE_SCALE && mGameInfo.delay >= 3){
- mCLRootRing.setVisibility(View.GONE);
- mCLOverTimeScale.setVisibility(View.VISIBLE);
- }else{
- mTVLabel.setText(getLabel());
- }
- Logger.i("RingActivity init");
- }
- @Override
- protected void onSaveInstanceState(@NonNull Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(PARAM_GAME_INFO, mGameInfo);
- }
- @Override
- protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- mGameInfo = savedInstanceState.getParcelable(PARAM_GAME_INFO);
- }
- @Override
- protected int getRootLayout() {
- return R.layout.activity_ring;
- }
- @Override
- protected void onDestroy() {
- if (!mGoToGameOrScale)
- App.CAN_PLAY_GAME = true;
- stopPlay();
- restoreVolume();
- super.onDestroy();
- }
- @Override
- public void onBackPressed() {}
- @OnClick({R.id.now, R.id.do_it_now})
- public void clickNow(){
- Logger.i("enter game or scale");
- mGoToGameOrScale = true;
- if (mGameInfo.playGameType == ResGameInfo.GAME_TYPE_GAME){
- GameActivity.LAUNCH_GAME(this, mGameInfo);
- } else {
- ScaleActivity.LAUNCH(this, mGameInfo.playGameId, mGameInfo.date);
- }
- finish();
- }
- @OnClick({R.id.sure, R.id.do_it_later})
- public void clickSure(View view){
- int delay = -1;
- if (view.getId() == R.id.sure) {
- switch (mRGDelay.getCheckedRadioButtonId()) {
- case R.id.delay_5:
- delay = 5;
- break;
- case R.id.delay_10:
- delay = 10;
- break;
- case R.id.delay_15:
- delay = 15;
- break;
- case R.id.delay_20:
- delay = 20;
- break;
- case R.id.delay_25:
- delay = 25;
- break;
- case R.id.delay_30:
- delay = 30;
- break;
- }
- }else
- delay = 0;
- if (delay == -1){
- clickNow();
- }else{
- if (LoginController.getInstance().isCurrentUserAdmin()){
- ToastUtil.showToast(RingActivity.this, "延遲成功");
- finish();
- return;
- }
- Dialog loading = new ProgressDialog(RingActivity.this);
- loading.setTitle("正在延遲");
- loading.show();
- new SimpleRequest<>().requestMustDo(RingActivity.this,
- mGameInfo.playGameType == ResGameInfo.GAME_TYPE_GAME ?
- GameController.getInstance().delayGame(mGameInfo.playGameId, mGameInfo.gameConfigId, delay, !mFirstDelay) :
- GameController.getInstance().delayScale(mGameInfo.playGameId, delay),
- "延遲失敗!請檢查網絡連接狀態", loading, new SimpleRequest.Executor<ControllerMessage<Object>>() {
- @Override
- public void execute(ControllerMessage<Object> obj) {
- loading.dismiss();
- if (obj.isSuccess()){
- ToastUtil.showToast(RingActivity.this, "延遲成功");
- finish();
- }else if(!TextUtils.isEmpty(obj.getMessage()) && obj.getMessage().equals("1")){
- mFirstDelay = false;
- mCLRootDelay.setVisibility(View.GONE);
- mTVHint.setVisibility(View.VISIBLE);
- TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mTVHint.setVisibility(View.GONE);
- mCLRootDelay.setVisibility(View.VISIBLE);
- }
- });
- }
- };
- Timer timer = new Timer();
- timer.schedule(timerTask, 5 * 1000);
- }
- }
- });
- }
- }
- @OnClick(R.id.push_back)
- public void clickPushBack(){
- Logger.i("choose delay");
- mCLRootRing.setVisibility(View.GONE);
- mCLRootDelay.setVisibility(View.VISIBLE);
- stopPlay();
- // String[] items = new String[]{"5分鐘", "10分鐘", "15分鐘", "20分鐘", "25分鐘", "30分鐘"};
- // new AlertDialog.Builder(this,0)
- // .setTitle("請選擇延遲時間")
- // .setItems(items, new DialogInterface.OnClickListener() {
- // @Override
- // public void onClick(DialogInterface dialogInterface, int i) {
- // dialogInterface.dismiss();
- //
- // if (LoginController.getInstance().isCurrentUserAdmin()){
- // ToastUtil.showToast(RingActivity.this, "延遲成功");
- // finish();
- // return;
- // }
- //
- // Dialog loading = new ProgressDialog(RingActivity.this);
- // loading.setTitle("正在延遲");
- // loading.show();
- // new SimpleRequest<>().requestMustDo(RingActivity.this,
- // mGameInfo.playGameType == ResGameInfo.GAME_TYPE_GAME ?
- // GameController.getInstance().delayGame(mGameInfo.playGameId, mGameInfo.gameConfigId, getDelayMin(i)) :
- // GameController.getInstance().delayScale(mGameInfo.playGameId, getDelayMin(i)),
- // "延遲失敗!請檢查網絡連接狀態", loading, new SimpleRequest.Executor<ControllerMessage<Object>>() {
- // @Override
- // public void execute(ControllerMessage<Object> obj) {
- // if (obj.isSuccess()){
- // ToastUtil.showToast(RingActivity.this, "延遲成功");
- // }else
- // ToastUtil.showToast(RingActivity.this, obj.getMessage());
- // finish();
- // }
- // });
- //
- // }
- // }).create().show();
- }
- // private int getDelayMin(int index){
- // switch (index){
- // case 1:
- // return 10;
- // case 2:
- // return 15;
- // case 3:
- // return 20;
- // case 4:
- // return 25;
- // case 5:
- // return 30;
- // case 0:
- // default:
- // return 5;
- // }
- // }
- private void playRing(){
- try {
- Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
- mRingTone = RingtoneManager.getRingtone(this, notification);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
- mRingTone.setLooping(true);
- mRingTone.play();
- } catch (Exception e) {
- e.printStackTrace();
- Log.e("three_games", "播放鈴聲失敗");
- }
- }
- private void maxVolume(){
- mCurrentVolume = getAudioManager().getStreamVolume(AudioManager.STREAM_ALARM);
- getAudioManager().setStreamVolume(AudioManager.STREAM_ALARM, getAudioManager().getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);
- }
- private void restoreVolume(){
- getAudioManager().setStreamVolume(AudioManager.STREAM_ALARM, mCurrentVolume, 0);
- }
- private AudioManager getAudioManager(){
- return (AudioManager) getSystemService(Context.AUDIO_SERVICE);
- }
- private void stopPlay(){
- if (mRingTone != null && mRingTone.isPlaying()){
- mRingTone.stop();
- }
- }
- private String getLabel(){
- return mGameInfo.playGameType == ResGameInfo.GAME_TYPE_GAME ? "您需要做測試啦" : "您需要做量表啦";
- }
- public static void LAUNCH(Context context, ResGameInfo gameInfo){
- Intent intent = new Intent(context, RingActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.putExtra(PARAM_GAME_INFO, gameInfo);
- context.startActivity(intent);
- }
- }
|