0

사전 정의 된 시간에 두 개의 코드 블록을 실행하려고합니다. 나는 그 목적으로 AlarmManager를 사용하고있다. 2 명의 separte AlarmManagers와 2 개의 별도 보류 인 텐트. 화면의 버튼을 누르면 트리거 할 알람이 두 개 (5 초 후 첫 번째 트리거, 두 번째 19 초 후) 설정되었습니다. 내 문제는 두 가지 경보이며 결과적으로 두 가지 코드 블록이 동시에 5 초 후에 동시에 트리거됩니다. 보류중인 의도의 ID를 변경했지만 아직이 문제에 직면하고 있습니다.해결 방법 단일 클래스에서 여러 개의 알람

다음 내 주요 활동 자바 클래스 코드 :

public class PerseusAndroid extends Activity implements OnClickListener, OnItemClickListener { 

PendingIntent pi,pi2; 
AlarmManager amon,amoff; 
BroadcastReceiver br,br2; 


BluetoothSocket m_btSck;          

public static final int idTab2FWD = Menu.FIRST + 1, 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.PreseusAndroid); 
    setup(); 
    setup2(); 
} 

private void setup() 
{  
    br = new BroadcastReceiver() { 

     @Override 

     public void onReceive(Context c, Intent i) { 

      if (m_btSck != null) 

       try { 

        m_btSck.getOutputStream().write('1'); 
        Toast.makeText(getBaseContext(), "Led is ON.. :)", Toast.LENGTH_LONG).show(); 
       } 
       catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }; 


     registerReceiver(br, new IntentFilter("net.pocketmagic.perseus")); 
     final int _id2 = (int) System.currentTimeMillis(); 

     pi = PendingIntent.getBroadcast(this,_id2 , new Intent ("net.pocketmagic.perseus"),PendingIntent.FLAG_CANCEL_CURRENT); 

     amon = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE)); 

} 

private void setup2() 
{  

    br2 = new BroadcastReceiver() { 

     @Override 

     public void onReceive(Context c1, Intent i1) { 

      if (m_btSck != null) 

       try { 

        m_btSck.getOutputStream().write('0'); 
        Toast.makeText(getBaseContext(), "Led is Off.. :)", Toast.LENGTH_LONG).show(); 
      } 
       catch (IOException e) { 
        // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      } 
     }; 

     registerReceiver(br2, new IntentFilter("net.pocketmagic.perseus")); 
     final int _id = (int) System.currentTimeMillis(); 
     pi2 = PendingIntent.getBroadcast(this, _id, new Intent("net.pocketmagic.perseus"),PendingIntent.FLAG_ONE_SHOT); 

     amoff = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE)); 
} 

@Override 
public void onClick(View v) { 
    int cmdId = v.getId(); 
    if (cmdId == idTab2FWD) 
    { 
     amon.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() +5000, pi); 
     //amoff.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() +19000, pi2); 
    } 

    } 
} 
} 

답변

0

하는 당신은 모두 의도를 등록/같은 목적/필터 수신기. 즉, 다른 수신기도 트리거합니다. 각 동작에 대해 Intent/IntentFilter를 구체화하십시오. 즉, "net.pocketmagic.perseus" 대신 "net.pocketmagic.perseus.ACTION_1""net.pocketmagic.perseus.ACTION_2"을 사용하십시오.

+0

감사합니다. Pescis ... 문제가 해결되었습니다 .... –

관련 문제