我刚开始在Eclipse的Mac OS X上进行Android开发.调试Activity时,我不断收到以下错误:
JAR文件/platforms/android-10/android.jar没有源附件.
这开始变得非常烦人,这是否意味着什么事情在某处抛出异常?(消息本身并没有提供任何有意义的信息,说明为什么会发生这种情况)我不想进入源头; Eclipse默认执行此操作吗?我该如何禁用它?
我需要检测给定的.dll或.exe文件是32位还是64位
目前我只有一个解决方案:从指定文件中读取PE标头并从那里取出"机器"字段.
(规范:Microsoft可移植可执行文件和通用目标文件格式规范(.docx文件),参见"3.3.COFF文件头(对象和图像)"部分)
此字段最多可包含约20个值.其中三个是:
IMAGE_FILE_MACHINE_I386 ( == 32bit )
IMAGE_FILE_MACHINE_IA64 ( == 64bit )
IMAGE_FILE_MACHINE_AMD64 ( == 64bit )
Run Code Online (Sandbox Code Playgroud)
我的问题:
1)"机器"的位图映射是正确的还是我错过了什么?还有其他警告吗?
2)是否有更简单的方法来检测32/64位数(可能是PE格式的某些特定字段我没有注意到或某些特殊的系统功能)?
我正在使用SCREEN_DIM_WAKE_LOCK,因此我永远不会关闭.它只是从全亮度变暗.
我有什么方法可以检测屏幕变暗(事件,接收器等)吗?
最近我被告知静态类/方法是邪恶的.
以我的类Logger为例:
class Logger{
private static $logs = array();
public static function add($msg){
self::$logs[]=$msg;
}
public static function echo(){
print_r(self::$logs);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在我的应用程序中随时使用,如下所示:
Logger::add('My log 1');
Run Code Online (Sandbox Code Playgroud)
但阅读这些开发人员:
Logger类看起来不太好.
那么:我可以静态使用它还是应该不惜一切代价避免使用它?
我意识到这个主题还有其他一些帖子,但这些帖子的解决方案对我不起作用.
基本上,我想停止我的Activity重新启动设备方向更改.为此,我修改了清单文件中的活动:
<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden"></activity>
Run Code Online (Sandbox Code Playgroud)
我onConfigurationChanged()在我的活动中覆盖了:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
System.out.println("IN onConfigurationChanged()");
}
Run Code Online (Sandbox Code Playgroud)
但是,在方向更改时,活动仍在重新启动,并且onConfigurationChanged()未调用该方法.
有谁知道为什么会这样?
我最近一直在努力使用Android UI库提供的TranslateAnimation框架.
我设计了一个RelativeLayout,它有一个或多或少占用屏幕80%的GridView,以及屏幕底部的ImageView.后者它应该随着方向随意移动屏幕的底部.
这是布局:
<ImageView
android:id="@+id/bottom_fish"
android:layout_alignParentBottom="true"
android:adjustViewBounds="true"
android:cropToPadding="true"
android:scaleType="centerInside"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:layout_alignParentLeft="true"
android:layout_weight="0"
android:src="@drawable/little_fish_right"
></ImageView>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_above="@id/mouin_bottom"
android:columnWidth="90dp"
android:numColumns="4"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
Run Code Online (Sandbox Code Playgroud)
这是TranslateAnimation:
TranslateAnimation slide = new TranslateAnimation(x0, newX, y0, newY);
slide.setFillAfter(true);
slide.setInterpolator(new LinearInterpolator());
slide.setDuration(duration);
slide.setAnimationListener(animationListener);
iv.startAnimation(slide);
x0 += newX;
y0 += newY;
Run Code Online (Sandbox Code Playgroud)
分配给动画的AnimationListener只是在onAnimationEnd函数上调用此方法.
问题是,当图像从右向左移动时,它会在屏幕上留下位图痕迹,一段时间后会被删除.
知道可以解决问题的地方吗?
谢谢.
我有一个通过CSS文件格式化的WebView - 我在应用程序内为此视图动态生成HTML,就像Web服务器一样.生成的HTML引用静态CSS文件进行格式化.我有一个图像格式化指令,如:
img {
width: 20px;
height: 20px;
}
Run Code Online (Sandbox Code Playgroud)
为了使这个设备独立,我想使用dip而不是px进行宽度和高度测量.我无法弄清楚(也没有找到)如何在css定义中指定dip作为一个单元.我试过"dp"和"dip",两者都不起作用.可以这样做吗?
我知道我可以通过<"target-densitydpi = high-dpi">类型的选择器选择多个版本的CSS文件,但这意味着我将拥有重复的CSS文件,只是为了能够根据不同的设备密度.可行,但我更喜欢能够在CSS文件中指定dip并让WebView为我工作.
同样可行的是在HTML头中生成内联样式表并将dip转换为特定设备的px,但这会导致CSS定义和HTML生成代码之间的耦合.可能比多个CSS文件(对于我的应用程序)更好,但是只需在CSS文件中设置dip并完成它就会好得多.
(我的图像旨在允许在没有工件的情况下调整当前支持的屏幕密度范围)
我无法从中生成通知(在通知区域中)IntentService.我得到了一段NullPointerException时间NotificationManager.问题在于Context.
06-01 16:46:05.910: ERROR/AndroidRuntime(14745): Caused by: java.lang.NullPointerException
06-01 16:46:05.910: ERROR/AndroidRuntime(14745): at android.content.ContextWrapper.getSystemService(ContextWrapper.java:363)
06-01 16:46:05.910: ERROR/AndroidRuntime(14745): at com.Android.Main1.FileUploaderService.<init>(FileUploaderService.java:71)
Run Code Online (Sandbox Code Playgroud)
代码行是:
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Run Code Online (Sandbox Code Playgroud)
我试过了getApplicationContext(),getBaseContext()但无济于事.
有人可以告诉我这里有什么问题吗?如何从IntentService生成通知?
附加信息:我的应用程序中
也有一个Service,并且来自那里的通知正常工作.该IntentService不是由活动时间; 它由服务部门启动.
我有一个显示相机预览的应用程序,我希望用户能够将手机置于睡眠状态,然后唤醒它,以便我的应用程序能够正确恢复.问题是,从睡眠状态返回时,摄像头预览不会重新启动.
我已经实现了api演示中提供的相机预览,但似乎api演示示例仅通过纯粹的运气起作用.在示例中,屏幕方向被强制为横向,这意味着每次手机进入睡眠状态时手机都将进行配置更改,因为锁定屏幕处于纵向模式.如果在相机预览应用程序中使用纵向模式(就像在我的应用程序中),则会出现错误.
我已经知道这个bug与surfaceview的重新创建有关.表面应该在转到onPause时被销毁,然后在onResume之后重新创建,但是在睡觉时不会发生这种情况.似乎我必须销毁整个活动,然后重新创建它以使相机预览再次起作用.我希望能够重新创建surfaceview.
除了重新创建整个活动之外,还有办法强制重新创建surfaceview吗?
我们都知道,从Android 2.2开始,存在推送通知系统(C2dM).但是,我没有看到很多开发人员使用它.在我的下一个项目中,我计划(希望如此)使用这个系统.所以在我深入研究之前,我想知道它有什么不好的一面?为什么人们不使用它?
它不能仅仅因为与2.2之前的系统不兼容.