2017-05-27 8 views
0

レシーバが正常に動作しています...保留中のインテントが送受信されており、これまではすべて正常に動作していました...スピナにはアラーム音が入っていて、ユーザがそのアイテムをクリックすると0..can誰かがこれは私の目覚まし時計の活動レシーバがデータを取得しない

int choose_alarm_sound; 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 



       String selected = parent.getItemAtPosition(position).toString(); 
       choose_alarm_sound = position; 
       Intent broad_Intent = new Intent(); 
       Log.e("TEST 1", choose_alarm_sound + ""); 



       switch (selected) { 
        case "Buzzer": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.buzzer); 
         mp.start(); 

         break; 
        } 
        case "Doorbell": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.doorbell); 
         mp.start(); 

         break; 
        } 
        case "FirePager": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.firepager); 
         mp.start(); 

         break; 
        } 
        case "Ring": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.ring); 
         mp.start(); 

         break; 
        } 
        case "SchoolBell": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.schoolbell); 
         mp.start(); 

         break; 
        } 
        case "Siren": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.siren); 
         mp.start(); 

         break; 
        } 
        case "Siren2": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.siren2); 
         mp.start(); 

         break; 
        } 
        case "SmokeAlarm": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.smokealarm); 
         mp.start(); 

         break; 
        } 
        case "Warning": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.warning); 
         mp.start(); 

         break; 
        } 

       } 
       broad_Intent.putExtra("alarm_choice", choose_alarm_sound); 
       Log.e("TEST 2", choose_alarm_sound + ""); 
       sendBroadcast(broad_Intent); 

の私のスピナーです

を助けるように、私は位置を取得し、receiver..problemにそれを送信する受信機は、常に値を取得していますこれは私の受信機です

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent arg1) { 

    Integer getAlarm=arg1.getExtras().getInt("alarm_choice"); 

    Log.e("TEST 3", String.valueOf(getAlarm)); 

私のログテスト1とテスト2は常に正しい値ですが、受信者のテスト3は毎回0です。私の受信者はこの意図を受けていません。 .ANYの助けを大幅に高く評価されるだろう

マニフェスト:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/mini" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
    <activity android:name=".TimeDateRem"/> 
    <activity android:name=".BirthdayRem"/> 
    <activity android:name=".Details"/> 
    <activity android:name=".DailyReminder"/> 
    <activity android:name=".HolidayReminderLebanon"/> 
    <activity android:name=".HolidayReminderSaudiArabia"/> 
    <activity android:name=".HolidayReminderKuwait"/> 
    <activity android:name=".HolidayReminderUAE"/> 
    <activity android:name=".AlarmChooser"/> 
    <activity android:name=".Timer"/> 
    <receiver android:name=".AlarmReceiver"> 
</receiver> 
    <service android:name=".MediaPlayingService"/> 
</application> 

+0

あなたが投稿したコードでは、余分なもの以外には「何でも**」を「broad-Intent」に入れることはありません。 'sendBroadcast()'を呼び出すと、何も起こらないはずです。なぜなら、ACTIONまたはコンポーネントが放送の 'Intent'に設定されていないからです。あなたの 'AlarmReceiver.onReceive()'は決して呼ばれるべきではありません。使用している実際のコードを反映するように投稿を編集してください! –

+0

だから私はいけない場合...それはいずれかの方法shouldntそれを送信する必要がありますか?私のコードの残りの部分はこの部分とは関係がありません...この具体的な意図は、受信者へのスピナーの項目の位置を私に知らせることになっています...もしsendbroadcastが意図的に余分で...その意図を受信者にどのように送ろうとしていますか?受信者が呼び出されている...受信者のログ(テスト3)が呼び出されているが、正しい値ではない0が返されている@DavidWasser – spyder3anz

+0

申し訳ありませんが、これはまったく意味がありません。あなたが "余分な"だけで放送する 'Intent'を送ると、Androidは' Intent'を配信する人を誰も知らない。ブロードキャスト 'Intent'はシステム全体にわたり、アンドロイドはそれを受信するために登録したすべてのリスナーに' Intent'を送ります。私の意見では、あなたの 'AlarmReceiver.onReceive()'が呼び出される原因があります。なぜなら、あなたが期待している 'Intent'に"余分な "ものがない理由を説明するでしょう。マニフェストを投稿してください。多分この謎を解くのに役立ちます! –

答えて

0

choose_alarm_soundidに設定しているため、positionではないためです。

+0

本当にそうではありません.iちょうどそれを位置に設定しても、受信機は0として値を取得します.Marc – spyder3anz

+0

あなたのコードがあなたのポストに入っているので、本当にあなたはlongからintにキャストするidにchoose_alarm_soundを設定します。実際のスピナーの位置を使用する代わりに。 choose_alarm_soundを整数に変更します(これはコード内でlongと書かれています)。change select_alarm_sound =(int)id;選択するには_alarm_sound =位置; – Marc

+0

私はちょうどそれをしました...テスト3はまだ受信者がまだその値を受け取っていないことを意味する0です.. @Marc – spyder3anz

0

ブロードキャストをACTIONで送信する必要があります。そのACTIONが表示されたら、BroadcastReceiverに電話するようにAndroidに通知する必要があります。このような何かを試してみてください:

マニフェストで:

<receiver android:name=".AlarmReceiver"> 
    <intent-filter> 
     <action android:name="MyAlarmReceiver"/> 
    </intent-filter> 
</receiver> 

これは、誰もがACTIONは "MyAlarmReceiver" で放送Intentを送信した場合AlarmReceiver.onReceive()を呼び出すためのAndroidに伝えます。あなたはonItemSelected()で放送Intentを作成するときに今

、次の操作を行います。

Intent broad_Intent = new Intent("MyAlarmReceiver"); 

これは放送Intentに「MyAlarmReceiver」でアクションを設定します。

+0

私はこれがうまくいくと確信していました。... did not ..同じ出力...テスト3はまだ0です...とにかくありがとうございます – spyder3anz

+0

私はこのコードを追加した後に受信者が2回呼び出されていることを認識しました。既に – spyder3anz

+0

と呼ばれていました。AlarmReceiverが既に呼び出されている場合は、それをどこかに登録しておく必要があります。 AlarmReceiverへの参照については、コードをスキャンしてください。さもなければ、これはまったく意味がありません! –

関連する問題