2010-02-09 35 views
30

Tôi muốn thêm phản hồi xúc giác vào các nút của ứng dụng và điều khiển chúng theo cách lập trình để hiển thị trạng thái nút (đã bật và tắt). Trình thiết lập phản hồi xúc giác mặc định chỉ hoạt động cho báo chí dài. Làm thế nào tôi có thể làm cho nó hoạt động cho các nút bấm đơn giản.Cách bật phản hồi xúc giác trên giao diện nút

Và có cách nào để có phản hồi xúc giác về các sự kiện như di chuyển cảm ứng không?

Trả lời

55

Dưới đây là một câu trả lời, mặc dù nó có thể không được thực hiện tốt nhất:

import android.view.View; 
import android.os.Vibrator; 

public class Main extends Activity implements OnClickListener 
{ 
    private View myView; 
    private Vibrator myVib; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     myVib = (Vibrator) this.getSystemService(VIBRATOR_SERVICE); 

     //myView can be any type of view, button, etc. 
     myView = (View) this.findViewById(R.id.myView); 
     myView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) 
    { 
     myVib.vibrate(50); 
     //add whatever you want after this 
    } 
} 

Đừng quên, bạn cũng cần phải thêm "android.permission.VIBRATE" phép biểu hiện của chương trình. Bạn có thể làm như vậy bằng cách thêm thông tin sau vào tệp "AndroidManifest.xml":

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

Tôi hy vọng điều đó sẽ hữu ích.

+0

Nếu bạn đặt 'this.getSystemService (VIBRATOR_SERVICE)'; bên trong nút onClickListener của nút, sau đó 'this' dùng để chỉ nút không có phương thức getSystemService. Sử dụng nó thay vào đó: 'getApplicationContext(). GetSystemService (VIBRATOR_SERVICE);' –

+0

bạn không thể luôn luôn sử dụng getApplicationContext() bên trong một onClickListener – sudocoder

26

Chế độ xem có hàm performHapticPhản hồi, cho phép bạn thực hiện chức năng này bất cứ khi nào bạn muốn, tức là trên trình nghe OnClick.

+1

tôi đã thêm đoạn mã sau vào phương pháp onClick của OnClickListener nhưng nó đã không làm việc btn_left \t \t \t \t \t .performHapticFeedback (HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); Tôi không chắc chắn cách cờ này hoạt động –

+1

Bạn đã đặt phản hồi xúc giác để bật chưa? Theo tài liệu: http://developer.android.com/intl/fr/reference/android/view/View.html#performHapticFeedback(int) điều này là cần thiết để có bất kỳ phản hồi xúc giác nào để chơi. Tôi không chắc về hằng số đó, bạn có thử dùng VIRTUAL_KEY không? –

+0

HapticFeedbackConstants.VIRTUAL_KEY không khả dụng. Hiện tại tôi đang sử dụng Android 1.5_r2 Và có phản hồi xúc giác được bật cho các nút trong chính xml. Vẫn không may mắn –

70

Ví dụ về Mayra là để chạy Phản hồi xúc giác bằng cách sử dụng mã này.

View view = findViewById(...) 
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); 

Và dòng mã này có thể dễ dàng được bao gồm trong hành động bạn nhấp chuột. Phần tốt với điều này là bạn không cần phải đặt quyền trong AndroidManifest (Tôi không cần điều này trên SdkVersion "7" (2.1 hoặc 2.3 là 7))

Cũng ghi chú trong mã của tôi ở đây sẽ chỉ chạy nếu sử dụng như cho phép Phản hồi xúc giác là toàn cầu. Xem http://developer.android.com/reference/android/view/HapticFeedbackConstants.html để sử dụng đồng thời.

+5

nên chấp nhận để sử dụng tốt hơn api .. – Ewoks

+12

Thêm 'android: hapticFeedbackEnabled =" true "' vào nút xml hoặc sử dụng 'btn.setHapticFeedbackEnabled (true);' trong mã –

Các vấn đề liên quan