为了账号安全,请及时绑定邮箱和手机立即绑定

做完之后摇一摇就闪退。

package imooc.shake;

import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;

public class ShakeActivity extends AppCompatActivity implements ShakeSensor.OnShakeListener {

    private static final int MSG_COUNT_END=0X01;//次数使用结束
    private static final int MSG_COUNT_CONTINUE=0X02;//次数没有使用结束
    private ShakeSensor mShakeSensor;
    private MediaPlayer mPlayer;//音乐效果
    private Vibrator mVibrator;//震动效果
    private ImageView mImgHandle;//视图
    private TextView mTxtCount;
    private static int count=3;//记录次数
    private boolean isStart;//是否是开始记录

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shake);
        mImgHandle= (ImageView) this.findViewById(R.id.img_hand);
        mTxtCount= (TextView) this.findViewById(R.id.txt_show_count);
        mShakeSensor = new ShakeSensor(this);
        //注册回调事件
        mShakeSensor.setOnShakeListener(this);
        mShakeSensor.init();

        mVibrator=(Vibrator)this.getSystemService(Context.VIBRATOR_SERVICE);

        //启动动画
        Animation animation = AnimationUtils.loadAnimation(this,R.anim.main_img_handle);
        mImgHandle.startAnimation(animation);
    }
    Handler mHandler = new Handler(){
        public void handleMessage(android.os.Message msg){

            if(msg.what==MSG_COUNT_END){
                //只有震动效果,没有音效,没有产品效果
                startVibrator();
            }else{
                //震动、音乐效果
                startAudioWithVibrator();
                Intent show = new Intent(ShakeActivity.this,ShowActivity.class);
                startActivity(show);

            }
        };
    };

    @Override
    protected void onResume() {
        super.onResume();
        if(count==0){
            count=0;
        }else {
            if(isStart)
            count--;
        }
        isStart=true;
        mTxtCount.setText("今天您还可以摇"+count+"次");
    }

    @Override
    public void onShake() {
        if(count==0){
            //次数已经使用完成
            mHandler.sendEmptyMessage(MSG_COUNT_END);
        }else {
            //还有次数
            mHandler.sendEmptyMessage(MSG_COUNT_CONTINUE);
        }
        //实现操作
//        Toast t = Toast.makeText(this, "摇一摇成功", Toast.LENGTH_SHORT);
//        t.setGravity(Gravity.CENTER,0,0);
//        t.show();

        //添加跳转时ShowActivity进入的动画
        overridePendingTransition(R.anim.main_set_in,0);
    }
/*
 *  启动音乐以及震动
 */
    public void startAudioWithVibrator() {
        mPlayer=MediaPlayer.create(this,R.raw.faded);
        //播放
        mPlayer.start();

        //震动效果
        long pattern[]={500,300,500,300};//间隔多长时间震动
        mVibrator.vibrate(pattern,-1);

    }
/*
 *  启动震动
 */

    public void startVibrator(){
        //震动效果
        long pattern[]={500,300,500,300};//间隔多长时间震动
        mVibrator.vibrate(pattern,-1);
    }

}

哪位大神帮忙看一下,我这个代码哪里写错了?

正在回答

2 回答

虽然你肯定解决了

<uses-permission android:name="android.permission.VIBRATE"/>

清单文件中加这句话给权限

0 回复 有任何疑惑可以回复我~

老师的视频丢失了一段,从视频中找到一些抠上去了,但还是有一些可能没写到?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

做完之后摇一摇就闪退。

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号