2015-04-02 3 views
1

Недавно я загрузил Gear Fit-SDK с форума XDA-Developers-forum и попробовал пример в pdf-файле.Gear Fit SDK IllegalStateException

Приложение запускается, и я могу нажать на ListViewItem, чтобы запустить ExampleDialog на моем Gear Fit. Но тогда я получаю следующее сообщение об ошибке:

04-01 15:00:52.748 29498-29498/de.chrosey.gearfitone E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: de.chrosey.gearfitone, PID: 29498 
java.lang.IllegalStateException: Scup is not initialized 
     at com.samsung.android.sdk.cup.ScupDialog.<init>(Unknown Source) 
     at de.chrosey.gearfitone.cup.HelloCupDialog.<init>(HelloCupDialog.java:15) 
     at de.chrosey.gearfitone.MainActivity$1.onItemClick(MainActivity.java:39) 
     ... 

Вот мои файлы:

MainActivity.java

public class MainActivity extends ActionBarActivity { 

String[] NAMES = {"Hello Cup"}; 
private HelloCupDialog mHelloCupDialog = null; 

private static final int Hello_Cup = 0; 
private ListView mListView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, NAMES); 
    mListView = (ListView) findViewById(R.id.demo_list); 
    mListView.setAdapter(adapter); 
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      if (position == Hello_Cup) { 
       if (mHelloCupDialog == null) { 
        mHelloCupDialog = new HelloCupDialog(
          getApplicationContext()); 
       } else { 
        mHelloCupDialog.finish(); 
        mHelloCupDialog = null; 
       } 
      } 
     } 
    }); 
}[...]} 

HelloCupDialog.java

public class HelloCupDialog extends ScupDialog { 

public HelloCupDialog(Context context) { 
    super(context);      //<-- this is where the error appears 
} 

@Override 
protected void onCreate(){ 
    super.onCreate(); 
    setBackEnabled(true); 
    ScupLabel helloLabel = new ScupLabel(this); 
    [...] 
    setBackPressedListener(new BackPressedListener() { 
     @Override 
     public void onBackPressed(ScupDialog scupDialog) { 
      finish(); 
     } 
    }); 
}} 

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="de.chrosey.gearfitone"> 

<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> 
<uses-permission android:name="com.samsung.android.sdk.permission.SAMSUNG_CUP_SERVICE"/> 

<application 
    [...] 
    <activity 
     [...] 
     <intent-filter> 
      <action android:name="com.samsung.android.sdk.cup"/> 
     </intent-filter> 
    </activity> 
    <meta-data 
     android:name="SAMSUNG_CUP_APP" 
     android:value="app_name;ic_launcher;true" /> 
</application> 

Я тестирую на Samsung S4, Lollipop StockRom. IDE - это Android Studio 1.1.

Есть ли у кого-нибудь идея, почему он не работает, как другие приложения с поддержкой чашек от PlayStore?

+0

такой же проблема здесь, нашли ли вы решение? – winne2

+0

не очень, извините – chrosey

+0

Хмм, похоже, эта проблема может быть связана с этим: http://markliebrand.blogspot.de/p/fixing-gear-fit-sdk-for-android-50.html I попробовал патч, описанный там, но он все еще падает на Nexus 5/Marshmallow, теперь с другим исключением. – winne2

ответ

0

Перед созданием экземпляра ScupDialog вам необходимо инициализировать Scup в своей MainActivity. Добавьте следующий код после setContentView.

Scup scup = new Scup(); 
    try { 
     scup.initialize(this); 
    }catch (Exception e){} 

Надеюсь, что это ясно!

+0

Спасибо за вашу помощь, но я уже сделал, как вы написали. – chrosey

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