我正在为Android服装设备开发表盘。一切都运行良好,但我们在Moto 360上遇到了问题。我的用户抱怨说,当用户想要激活手表时会出现相当大的延迟。触摸屏幕后1到5秒后显示屏幕(有时它工作得更快,有时更慢)。有人有这样的问题吗?我的应用程序在Samsung Gear Live和LG G Watch上进行了测试,并且可以正常使用。我现在无法获得Moto。
您可以查看我在此处制作的应用:https://play.google.com/store/apps/developer?id=Zuhanden
这是我的清单(可能缺少某些东西?):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="co.smartwatchface.watch.face.speedometer.android.wear"
android:versionCode="14"
android:versionName="1.9" >
<uses-sdk
android:minSdkVersion="20"
android:targetSdkVersion="20" />
<application
android:name="de.zuhanden.smartwatch.wear.squares.WatchApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="de.zuhanden.smartwatch.wear.squares.ui.activities.RectWatchfaceActivity"
android:allowEmbedded="true"
android:enabled="true"
android:label="@string/watchface_label_rect"
android:taskAffinity="" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="com.google.android.clockwork.home.category.HOME_BACKGROUND" />
</intent-filter>
<meta-data
android:name="com.google.android.clockwork.home.preview"
android:resource="@drawable/watchface_launcher_rect" />
</activity>
<activity
android:name="de.zuhanden.smartwatch.wear.squares.ui.activities.RoundWatchfaceActivity"
android:allowEmbedded="true"
android:enabled="true"
android:label="@string/watchface_label_round"
android:taskAffinity="" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="com.google.android.clockwork.home.category.HOME_BACKGROUND" />
</intent-filter>
<meta-data
android:name="com.google.android.clockwork.home.preview"
android:resource="@drawable/watchface_launcher_round" />
</activity>
<activity
android:name="de.zuhanden.smartwatch.wear.squares.ui.activities.SpeedometerActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<intent-filter >
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="de.zuhanden.smartwatch.wear.squares.services.DataLayerListenerService" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
</manifest>
谷歌播放服务用于应用程序,而不是表盘,所以它应该不是问题。我也使用这种方法来检查监视状态并控制动画fps:
@Override
public void onDisplayChanged(int displayId) {
final Display display = displayManager.getDisplay(displayId);
if (display != null) {
switch(display.getState()) {
case Display.STATE_DOZING:
onScreenDim();
break;
case Display.STATE_OFF:
onScreenOff();
break;
default:
// Not really sure what to so about Display.STATE_UNKNOWN, so
// we'll treat it as if the screen is normal.
onScreenAwake();
break;
}
}
}
当调用onScreenAwake()时,我切换到高fps(我在Handler中反复调用invalidate())和onScreenOff()内部我停止处理程序并且每分钟只启动一次刷新屏幕。
如果有任何帮助,我将不胜感激。