2011-11-09 18 views
8

Tôi muốn tắt cài đặt rung của thiết bị khi có cuộc gọi đến. Tôi đã triển khai BroadcastReceiver cho tính năng này thực hiện tác vụ khi nhận được phát sóng PHONE_STATE. Vấn đề là tôi không thể tắt rung động chút nào. Tôi đã thử những điều sau đây:Cài đặt rung không tắt khi nhận cuộc gọi đến - Android

AudioManager audioManager = (AudioManager) 
          context.getSystemService(Context.AUDIO_SERVICE); 
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, 
           AudioManager.VIBRATE_SETTING_OFF); 

hoặc

Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
vib.cancel(); 

Phương pháp đầu tiên có vẻ lý tưởng đối với tôi. Nó thậm chí còn hoạt động để bật "bật" các rung động khi nhận được cuộc gọi. Nhưng, tôi không thể biến chúng "tắt" trong tình huống này.

Có ai đã thử điều này không?

Chỉnh sửa: Tôi đã kiểm tra mã ứng dụng Điện thoại của Android. Mã sau đây có sẵn trong Ringer.java:

if (shouldVibrate() && mVibratorThread == null) { 
    mContinueVibrating = true; 
    mVibratorThread = new VibratorThread(); 
    mVibratorThread.start(); 
} 

Chủ đề được khởi đầu bằng ứng dụng Điện thoại rung điện thoại. Khi tôi thay đổi cài đặt rung để tắt kiểm tra này bị bỏ qua nhưng chuỗi đã bắt đầu vẫn tiếp tục chạy.

Điều này cũng giải thích cách rung động có thể được bật khi có cuộc gọi đến. Trong trường hợp đó, luồng không chạy ban đầu. Sau đó, nó được bắt đầu khi tôi bật cài đặt rung. Tôi không nghĩ có bất kỳ giải pháp nào cho vấn đề mà không thay đổi ứng dụng Điện thoại.

+1

tôi cũng sẽ quan tâm đến điều đó. theo như tôi biết nó giống như vậy: chủ đề hoặc ngữ cảnh bắt đầu rung động là chỉ có thể ngăn chặn nó sau này. về việc thay đổi cài đặt rung: có vẻ như có lỗi trong Android. không có thông báo nào được gửi đến người nghe nếu cài đặt thay đổi, do đó rung không thể dừng lại. – SimonSays

+0

Xin chào Aman, Bạn đã giải quyết vấn đề này chưa? Tôi đang phải đối mặt với cùng một vấn đề, hy vọng bạn sẽ giúp tôi về cùng. –

Trả lời

0

này:

Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
vib.cancel(); 

sẽ không giúp bạn vì nó hủy bỏ các trường hợp mới của Vibrator.

Tôi có thể hình dung rằng đã quá trễ để tắt rung của thiết bị nếu cuộc gọi đã đến khi rung đã được tiến hành. Vì vậy, bạn phải làm điều đó trước khi cuộc gọi đến.

+0

Tôi chỉ muốn thay đổi cài đặt rung khi cuộc gọi đến từ một trong các số liên lạc đã chọn. Vì vậy, thay đổi cài đặt rung trước cuộc gọi đến, không phải là một tùy chọn. Vì Android cho phép chế độ chuông và âm lượng chuông được thay đổi sau khi cuộc gọi đến, tôi cũng hy vọng sẽ thay đổi rung. –