2013-02-05 29 views
5

Tôi muốn bắt đầu và dừng một bộ thu phát sóng từ hai nút. Tôi đã viết mã cho điều này trong hai nút nghe.Khởi động và ngừng thu phát sóng

Mã này là như sau: -

Trong startButton Tôi đã viết mã cho việc đăng ký nhận như sau

 startCallBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      startCallBtn.setVisibility(View.INVISIBLE); 
      stopCallBtn.setVisibility(View.VISIBLE); 


      //register call receiver. 
      registerReceiver(callReceiver, new IntentFilter(
      "android.intent.action.CALL")); 
      System.out.println("Registered Call Receiver Perfectly"); 
     } 
    }); 

Trong một nút dừng Tôi đã viết lời kêu gọi ngừng nhận như

stopCallBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      stopCallBtn.setVisibility(View.INVISIBLE); 
      startCallBtn.setVisibility(View.VISIBLE); 
      stopService(new Intent(MainActivity.this, SpeakOut.class)); 
      FileOutputStream fos; 

      //Unregister sms receivers 
      unregisterReceiver(callReceiver); 
      System.out.println("Unregistered Call Broadcast Receiver"); 
     } 
    }); 

người nghe vẫn đang gọi khi cuộc gọi mới nhận được

+0

Bạn có đặt máy thu này cũng có trong manifest.xml? –

Trả lời

3

trong manifest

<receiver android:name="your receiver name"> 

chính Hoạt động

BroadcastReceiver br = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.w("Check", "Inside On Receiver"); 
      Toast.makeText(getApplicationContext(), "received", Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction(BROADCAST_ACTION); 
     filter.addCategory(Intent.CATEGORY_DEFAULT); 
     registerReceiver(br, filter); 

    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(br); 
    } 
} 
10

Bạn có thể thử mã này cho enabledisableBroadcastReceiver ..Tôi hy vọng điều này sẽ giúp bạn ..

public void enableBroadcastReceiver(View view) 
{ 

    ComponentName receiver = new ComponentName(this, AlarmManagerBroadcastReceiver.class); 
    PackageManager pm = this.getPackageManager(); 

    pm.setComponentEnabledSetting(receiver, 
      PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
      PackageManager.DONT_KILL_APP); 
    Toast.makeText(this, "Enabled broadcast receiver", Toast.LENGTH_SHORT).show(); 
    } 
    /** 
    * This method disables the Broadcast receiver registered in the AndroidManifest file. 
    * @param view 
    */ 
    public void disableBroadcastReceiver(View view){ 
    ComponentName receiver = new ComponentName(this, AlarmManagerBroadcastReceiver.class); 
    PackageManager pm = this.getPackageManager(); 
     pm.setComponentEnabledSetting(receiver, 
      PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
      PackageManager.DONT_KILL_APP); 
    Toast.makeText(this, "Disabled broadcst receiver", Toast.LENGTH_SHORT).show(); 
    } 
1

Make chắc chắn rằng bạn đang gọi unregisterReceiver() của sa tôi receiver đối tượng mà bạn đã gọi là registerReceiver(). Nếu bạn đang tạo đối tượng mới cho cùng một máy thu trước khi phát hành nó, thì đối tượng người nhận cũ được đăng ký không thể được hủy đăng ký nữa vì bạn đã cấp phát khối bộ nhớ mới cho nó.

Ví dụ, làm điều này:

MyBroadcastReceiver receiver = new MyBroadCastReceiver(); 
registerReceiver(receiver); 
unregisterReceiver(receiver); 

receiver = new MyBraodCastReceiver(); 
Các vấn đề liên quan