手机的AP和BP根据上下文可以指代硬件和软件两种意思.
1)大多数的手机都含有两个处理器。操作系统、用户界面和应用程序都在Application Processor(AP)上执行,AP一般采用ARM芯片的CPU。而手机射频通讯控制软件,则运行在另一个分开的CPU上,这个CPU称为Baseband Processor(BP)。
把射频功能放在BP上执行的主要原因是:射频控制函数(信号调制、编码、射频位移等)都是高度时间相关的。最好的办法就是把这些函数放在一个主CPU上执行,并且这个主CPU是运行实时操作系统的。
另外一个使用BP的好处是一旦它被设计和认证为好了的,不管你采用的操作系统和应用软件怎么变化,它都可以正确的执行功能(它的通讯功能)。另外,操作系统和驱动的bug也不会导致设备发送灾难性的数据到移动网络中。(FCC要求的)
由于AP和BP是分开的设备,手机设计者可以更加自由的设计用户界面和应用软件。
2)手机开发商,比如摩托罗拉,会将开发的手机软件包分为AP和BP两部分, 运行在Application Processor(AP)的软件包称为AP包,包括操作系统、用户界面和应用程序等; 与Baseband Processor(BP)相关的软件包称为BP包, 包括baseband modem的通信控制软件等. 相应地, 所谓的刷新手机AP和BP文件即是将这两个软件包更新到手机上. 为方便刷机, 也有将AP,BP文件和flex文件(手机的参数配置文件)作在一起的一体包.
最近在做一个小Demo时,需要画一个半透明的圆,看遍MIDP的API及Nokia UI包的文档,发现没有一个函数能做出此功能,没办法了,只好自已写了.
画圆的思路很简单,就是生成一个半径两倍的正方开的RGB数组,有来装圆上每个点的象素的颜色,如果这个点与圆心的距离 <= 半径,则这个点在圆里面,颜色为半透明的,如果与圆心的距离 > 半径,则这个点在圆外面,全透明,代码如下:
private int[] getCircleAry(int radius, int alpha) {
int[] aryTmp = new int[4*radius*radius];
for (int i = 0; i < 4*radius*radius; i++) {
int x = (int)(i / (2*radius));
int y = i % (2*radius);
int iSum = (radius - x)*(radius - x) + (radius - y)*(radius - y);
if (iSum > radius*radius)
aryTmp
= 0x00FF0000; //全透明
else
aryTmp
= (alpha << 24) | 0x00FF0000;//半透明
}
return aryTmp;
}
下面是做出来的效果:
椭圆的思路与圆的很相似,假设椭圆的X轴的半径是6,Y轴的半径是4,帽椭圆的公式v如下:
x2/36 + y2/16 = 1
用数学知识处理一下,分子都乘36*16,则公式变成如下:
16*x2 + 36*y2 = 36*16
再用这个公式来判断点是不是在椭圆里面,是则半透明,否则全透明,代码如下:
private int[] getEllipseAry(int radiusX, int radiusY, int alpha) {
int[] aryTmp = new int[4 * radiusX * radiusY];
int iPosX, iPosY, iSum1, iSum2;
iSum1 = radiusX * radiusX * radiusY * radiusY;
for (int i = 0; i < 4 * radiusX * radiusY; i++) {
iPosX = i % (2 * radiusX);
iPosY = (int)(i / (2 * radiusX));
iSum2 = (radiusX - iPosX) * (radiusX - iPosX) * radiusY * radiusY +
(radiusY - iPosY) * (radiusY - iPosY) * radiusX * radiusX;
if (iSum2 > iSum1)
aryTmp
= 0x00FF0000; //全透明
else
aryTmp
= (alpha << 24) | (0x0000FF & 0x00FFFFFF); //半透明
}
return aryTmp;
}
下面是做出来的效果:
转贴来自于:
http://www.j2medev.com/Article/Class1/Class12/200607/2810.html
最近在玩Nokia的tablet... N800和N810. 虽然不自带java, 但可以安装一个叫jalimo的冬冬, 使用cacao的java vm. 不过没有swing和awt, 所以要安装swt-gtk的jar.
jalimo的地址这里:
https://wiki.evolvis.org/jalimo/index.php/Main_Page
用你的N800/810去那里的maemo板块https://wiki.evolvis.org/jalimo/index.php/Maemo下载所需要的软件即可.
SWT的就相对简单了, 去eclipse.org那里就有很多samples:
import org.eclipse.swt.SWT; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.*; public class SimpleSwtSample { public static void main(String[] args) { Display display = Display.getDefault(); final Shell shell = new Shell(display); shell.setLayout(new RowLayout(SWT.VERTICAL)); Label label = new Label(shell, SWT.CENTER); label.setText("Hello maemo"); Button button = new Button(shell, SWT.NONE); button.setText("close"); button.addListener(SWT.Selection, new Listener() { public void handleEvent(Event arg0) { shell.dispose(); } }); shell.open(); while (!shell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); } }
在你PC的eclipse里面编译后SSH或者USB copy到N8x0, 然后在x-terminal或者SSH下面运行:
cacao -cp /usr/share/java/swt-gtk.jar:. SimpleSwtSample
由于目前maemo下面还没有java compiler, 所以不能在机子上编译.
貌似有人编译成功了jikes, 但需要很多的lib... 偶是功力不够... 幕友办法鸟~~~
有N8x0的童鞋可以试试, 挺好玩的一个机子~~~ 有wifi,skype,flash,python,gcc,java...
Nokia的tablet系统感觉是跟Apple的iPod touch是同一类型的产品,都是主打互联网,但不能打电话的.但是Nokia的tablet明显是不如Apple的iPod touch了.
还有它的gps也还是挺好玩的.
莫非老大有货要出? #18
莫非老大有货要出? #18
有啊,谁要?貌似几百块的样子,行情
不知JJ状况如何。 合适的话,就入一个折腾折腾。 哈哈。
不知JJ状况如何。 合适的话,就入一个折腾折腾。 哈哈。
挺新的,我基本没怎么用过,刚刷了2008 diablo final,装了个ssh,就这样,配件齐全