前几天拿老婆充话费送的天语小黄蜂T619来(Android2.3.5版的OS)测试《IP摄像头》,发现图像出不来,跟踪程序后发现是在startPreview时throw出startPreview failed错误,可在Android4.0以上版本没有,图像正常。谷歌了一番,网上也有很多类似的,说是Android2.3版本时要对SurfaceHolder调用setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);才行。自己弄了两天还是解决不了,还是会出现startPreview failed错误而没有图像。今晚把setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);调用放在了Activity的onCreate中,发现问题立马解决了!

部分代码如下:

surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
if(Build.VERSION.SDK_INT < 11)
	surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

这个语句在API level 11时被标注为了deprecated,所以加了一个判断,如果OS版本小于11才调用。
增加后《IP摄像头》在如此低端的大黄蜂上也跑起来了!如下图:

IMG_20140421_204719

最后发现《条码制作器》的摄像头扫描也有这个问题,添加上述代码后问题完美解决,在小黄蜂上也能扫条码了!两个APP将在下次更新中解决这个BUGS

Android4.0下用Activity作为对话框显示时,为了和让底部的按钮也同样拥有Holo对话框下的风格,只要将底部按钮的代码做如下修改:

 
    <View android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="?android:attr/dividerHorizontal" />
    <LinearLayout
            style="?android:attr/buttonBarStyle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:measureWithLargestChild="true"
            >
        <Button
                android:id="@+id/share"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/share"/>
        <Button
                android:id="@+id/edit"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/edit"/>
        <Button
                android:id="@+id/close"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/close"/>
    </LinearLayout>

就OK了!
这是在编写桌面便签的语音播放界面时用到的。

转载注明 http://www.shenyaocn.com/?p=147

在命令提示符下敲入 adb shell dumpsys activity activities|find “Run #” 回车即可!

可以得到如下信息:(示例)

Run #1: ActivityRecord{53634df8 com.shenyaocn.android.barmaker/.BarMakerActivity}
Run #0: ActivityRecord{536156e8 com.android.launcher/com.android.launcher2.Launcher}

Run #0就是位于栈底的启动器,Run #1是当前位于栈顶的APP,也就是当前窗口了。

最近做一个工具,用C#写的,其中有段就是获取Activity栈的方法: