2016-09-12 1 views
0

Я пытаюсь реализовать проект примера BluetoothLeGatt от android в своем собственном приложении для обработки служб BLE.Реализация BluetoothLeGatt

BluetoothLeGatt Example Android

Фактическое состояние является то, что у меня есть свое собственное приложение, которое имеет только один активность и я переключение между другими страницами с фрагментами. Я хотел бы реализовать пример Android, чтобы я мог получать данные Bluetooth и сохранять его в собственный класс данных (через интерфейс или что-то вроде этого не уверен прямо сейчас).

Пример Bluetooth работает без проблем, если я запускаю его на своем устройстве. Я также могу реализовать пример в мое приложение и использовать его как «начать деятельность» со следующим манифеста:

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 
    package="com.example.bb.app"> 
 
    <uses-permission android:name="android.permission.BLUETOOTH"/> 
 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
 

 
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 
 

 
    <application 
 
     android:allowBackup="true" 
 
     android:icon="@mipmap/ic_launcher" 
 
     android:label="@string/app_name" 
 
     android:supportsRtl="true" 
 
     android:debuggable="true"> 
 

 

 
     <activity 
 
      android:name=".DeviceScanActivity" 
 
      android:configChanges="keyboardHidden|orientation|screenSize" 
 
      android:label="@string/app_name"> 
 
      <!--android:theme="@style/AppTheme.NoActionBar"--> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.MAIN" /> 
 
       <category android:name="android.intent.category.LAUNCHER" /> 
 
      </intent-filter> 
 
     </activity> 
 
     
 
     <activity android:name=".DeviceControlActivity"/> 
 
     <activity android:name=".MyActivity"/> 
 
     <service android:name=".BluetoothLeService" android:enabled="true"/> 
 
     
 
     <meta-data 
 
      android:name="com.google.android.gms.version" 
 
      android:value="@integer/google_play_services_version" /> 
 
    </application> 
 
</manifest>

Но я не в состоянии переключиться между примером деятельности и мои собственные. Я использую простую кнопку с onClickListener, чтобы включить его так:

buttonChangeActivity = (Button) findViewById(R.id.buttonChangeActivity); 
 

 
     buttonChangeActivity.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       Toast.makeText(DeviceControlActivity.this, "PRESSED", Toast.LENGTH_SHORT).show(); 
 

 
       try{ 
 
        Intent myIntent = new Intent(DeviceControlActivity.this, MyActivity.class); 
 
        DeviceControlActivity.this.startActivity(myIntent); 
 
       }catch (Exception e){ 
 
        Toast.makeText(DeviceControlActivity.this, "ERROR", Toast.LENGTH_SHORT).show(); 
 
       } 
 

 
      } 
 
     });

И он по-прежнему работает. Но потом он говорит, что класс MyActivity должен использовать Theme.AppCompat, но я его уже использую. Вот весь код ошибки:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bb.app/com.example.bb.app.MyActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
 
                     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
 
                     at android.os.Handler.dispatchMessage(Handler.java:102) 
 
                     at android.os.Looper.loop(Looper.java:135) 
 
                     at android.app.ActivityThread.main(ActivityThread.java:5258) 
 
                     at java.lang.reflect.Method.invoke(Native Method) 
 
                     at java.lang.reflect.Method.invoke(Method.java:372) 
 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
 
                    Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
 
                     at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:343) 
 
                     at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312) 
 
                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277) 
 
                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
 
                     at com.example.bb.app.MyActivity.onCreate(MyActivity.java:262) 
 
                     at android.app.Activity.performCreate(Activity.java:5990) 
 
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
 
                     at android.app.ActivityThread.access$800(ActivityThread.java:151)  
 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)

Я использую панель инструментов в моей деятельности и пример проекта использует ActionBar, так что я уверен, мне нужно «коммутатор» между тем в то время как мой проект запущен, но я не знаю, как это сделать. Я уже прочитал некоторые другие случаи об этом поведении:

Stackoverflow 1

Любые советы, как переключить темы в то время как проект работает или где изменить его в моей Android Studio?

ответ

0

Нужно еще несколько минут, и я исправил свою проблему.

Просто изменил манифест, как это:

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 
    package="com.example.bb.app"> 
 
    <uses-permission android:name="android.permission.BLUETOOTH"/> 
 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
 

 
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 
 

 
    <application 
 
     android:allowBackup="true" 
 
     android:icon="@mipmap/ic_launcher" 
 
     android:label="@string/app_name" 
 
     android:supportsRtl="true" 
 
     android:theme="@style/AppTheme.NoActionBar" 
 
     android:debuggable="true"> 
 

 

 
     <activity 
 
      android:name=".MyActivity" 
 
      android:configChanges="keyboardHidden|orientation|screenSize" 
 
      android:label="@string/app_name"> 
 
      <!--android:theme="@style/AppTheme.NoActionBar"--> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.MAIN" /> 
 
       <category android:name="android.intent.category.LAUNCHER" /> 
 
      </intent-filter> 
 
     </activity> 
 

 
     <activity android:name=".DeviceControlActivity" 
 
        android:theme="@android:style/Theme.Holo.Light"/> 
 
     <activity android:name=".DeviceScanActivity" 
 
        android:theme="@android:style/Theme.Holo.Light"/> 
 
     <service android:name=".BluetoothLeService" android:enabled="true"/> 
 

 
     <meta-data 
 
      android:name="com.google.android.gms.version" 
 
      android:value="@integer/google_play_services_version" /> 
 
    </application> 
 
</manifest>

Так изменения темы для каждого вида деятельности, спасибо в любом случае.