如何在Android滚轮滚动时使手机震动?

3
我希望能在用户滚动android-wheel时,为每个项目更改振动手机并播放声音。我在iPhone的默认时间选择器中看到过这种效果,当我们滚动时间时,它会播放滴答声。 可能吗?如果是,请告诉我如何操作?如果我的问题描述不正确,请帮我修改。
3个回答

3

请尝试以下步骤:

步骤1:在AndroidManifest.xml文件中添加以下内容

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

onCreate()方法中,第二步是:
 Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
MediaPlayer mp = MediaPlayer.create(this, R.raw.your_sound);

步骤二:在ListView上设置setOnScrollListener

listView.setOnScrollListener(new OnScrollListener(){
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub
                            // Vibrate for 500 milliseconds
                 v.vibrate(500);
                           mp.start();
                 Log.i("a", "scrolling...");
        }
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub              
                Log.i("a", "scrolling stoped...");                  

        }
    });

希望这能帮助到您。

我已经尝试了上面的代码,它会在需要的时间之外震动列表...这意味着我刚开始滚动,甚至还没有滚动一个项目...但手机会震动超过10次...我已经检查了日志,发现该方法被多次调用... - Arsalan

1
我知道回答已经晚了,但也许对其他人有所帮助。
你需要在适配器类的onBindViewHolder中添加以下代码。
 Vibrator v = (Vibrator) holder.itemView.getContext().getSystemService(Context.VIBRATOR_SERVICE);
    // Vibrate for 20 milliseconds
    v.vibrate(20);

每当一个项目与recyclerView绑定时,这将使您的设备振动。

这样做会不会在列表初始化时根据项目的大小使设备振动多次? - martinseal1987

1

试试这个:

import android.os.Vibrator;




ListView lv = (ListView)findViewById(R.id.list_view);
        lv.setOnScrollListener(new OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
                    // Vibrate for 500 milliseconds
                    v.vibrate(500);}
        });

不要忘记在AndroidManifest.xml文件中包含权限:
<uses-permission android:name="android.permission.VIBRATE"/>

1
只有当用户开始/停止滚动时才会调用onScrollStateChanged,而不是每个项目都会调用。 :( - Arsalan
你如何区分ListView中的单个项目滚动? - Lokesh
我已经更正了我的问题,请再次审查一下...! - Arsalan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接