2014-05-12 4 views
0

Я разрабатываю приложение для Android, которое должно быть в состоянии определить, когда кто-то нажимает кнопку увеличения громкости телефона телефона и выдает уведомление о том, что нажата кнопка увеличения громкости.Доступ к кнопке тома через приложение для Android

Это мой класс BroadcastReceiver.

package com.example.volumebut; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.view.KeyEvent; 
import android.widget.Toast; 

public class HardwareButtonReceiver extends BroadcastReceiver { 



@Override 
public void onReceive(Context context, Intent intent) { 
KeyEvent e = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
    if(e.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { 
     Toast.makeText(context, "volume up button pressed." ,Toast.LENGTH_LONG).show(); 
    } 

} 





} 

Это мой файл манифест

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.volumebut" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 

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

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

    <receiver android:name=".HardwareButtonReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
     </intent-filter> 
    </receiver> 
</application> 

</manifest> 

Поскольку я новичок в андроид развитие я понятия не имею, как реализовать MainActivity.java файла.

Это MainActivity.java файл, который я написал до сих пор. Но это дает ошибку говоря «Метод registerMediaButtonEventReceiver (HardwareButtonReceiver) не определено для типа MainActivity»

package com.example.volumebut; 

import android.media.AudioManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.view.Menu; 

public class MainActivity extends Activity { 


public void onCreate(Bundle savedInstanceState) { 

    HardwareButtonReceiver receiver = new HardwareButtonReceiver(); 

    registerMediaButtonEventReceiver(receiver); 

} 




} 

Если вы, ребята, можете помочь мне решить мою проблему, я ценю это много.

ответ

0

Вы должны добавить метод registerMediaButtonEventReceiver в свой класс активности.

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.xml_of_your_activity); 
     HardwareButtonReceiver receiver = new HardwareButtonReceiver(); 
     registerMediaButtonEventReceiver(receiver); 
    } 

    private void registerMediaButtonEventReceiver(HardwareButtonReceiver receiver) { 

    } 
} 

И затем осуществить его, конечно.

+0

@ Фокс в носки, я сделал как сказал. Но затем я получаю ошибку времени выполнения, говоря: «Приложение VolumeBtn (процесс com.example.volumebtn) неожиданно остановилось. Повторите попытку». Иногда способ, которым я реализовал метод onCreate, может быть неправильным. Итак, вы можете предложить альтернативный способ реализации метода onCreate, кроме того, как я его реализовал. –

+0

@ hasitha1990, по крайней мере, вам нужно вызвать супер метод: 'super.onCreate (savedInstanceState);' и затем установить представление содержимого: 'setContentView (R.layout.xml_of_your_activity);' Поэтому я рекомендую вам читать документацию (Java и Android) и попробуйте разработать более простой проект, чтобы понять основы. Я обновил свой ответ. – eleven

+0

@ Фокс в носках, спасибо, я сказал, как сказал. Теперь приложение запускается без ошибок. Но проблема в том, что он не определяет нажатие кнопки громкости. Иногда моя логика может быть несовместимой с нажатием кнопки громкости. –

0

http://developer.android.com/reference/android/view/KeyEvent.html

пройти по ссылке выше, вы получите различные ключевые события

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 


      if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
//   
      } 
      else if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
      { 

      } 

     return super.onKeyDown(keyCode, event); 
    } 
+0

, Спасибо u. могу ли я сказать, где я должен поместить этот сегмент кода в файл MainActivity.java. Нужно ли мне обращаться к этому методу внутри метода onCreate? Просьба уточнить. –

+0

creat этот метод в вас - активность ... это метод активности, он будет работать – rajahsekar

Смежные вопросы