2015-04-02 52 views
1

我最近从XDA开发人员论坛下载了Gear Fit-SDK,并尝试了pdf文件中的示例。Gear Fit SDK IllegalStateException

该应用程序正在启动,我可以点击ListViewItem在我的Gear Fit上启动ExampleDialog。但后来我得到以下错误:

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 2015-12-10 10:22:26

+0

不是,对不起 – chrosey 2015-12-10 13:19:46

+0

嗯,看起来好像这个问题可能与这个问题有关:http://markliebrand.blogspot.de/p/fixing-gear-fit-sdk-for-android-50.html I尝试了那里描述的补丁,但它仍然在Nexus 5 /棉花糖上崩溃,现在又有一个例外。 – winne2 2015-12-10 15:10:13

回答

0

您需要在创建ScupDialog实例之前初始化MainActivity中的Scup。在setContentView之后添加下面的代码。

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

希望这是明确的!

+0

感谢您的帮助,但我已经像你写的一样。 – chrosey 2015-07-13 12:31:25