1、安装ApiDemo报错
root@meie:~# adb install '/work/updatecode/ApiDemos/bin/ApiDemos.apk' 2659 KB/s (2474915 bytes in 0.908s) pkg: /data/local/tmp/ApiDemos.apk Failure [INSTALL_FAILED_MISSING_FEATURE]
2、注释AndroidManifest.xml里面的
1. <uses-permission android:name="android.permission.CAMERA" /> 2. <uses-feature android:name="android.hardware.camera" /> 3. <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
3、编译源码,再次安装OK
本实例介绍自定义Broadcast Receiver和系统
1、自己定义Broadcast Receiver来处理广播事件
自己定义一个广播是比较简单的,首先在我们的程序组件里构建想要广播的Intent,使用sendBroadcast方法发送出去。其次定义一个广播接收器,该广播接收器继承BroadcastReceiver,并且覆盖onReceive()方法来相应事件。
最后注册该广播接收器,我们可以在代码中注册,也可以在AndroidManifest.xml配置文件中注册。
下面通过一个实例来演示Intent发出广播和Broadcast Receiver处理广播的过程:
MyReceive.java
public class MyReceive extends BroadcastReceiver{ /* (non-Javadoc) * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) */ @Override public void onReceive(Context context, Intent intent) { String message = intent.getStringExtra("message"); Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } }
在AndroidManifest配置文件中声明广播接收器组件:
<receiver android:name="MyReceive"> <intent-filter > <action android:name = "com.newcosoft.receive.MY_ACTION"></action> </intent-filter> </receiver>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/sendButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="发送广播"/> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity { private Button sendButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sendButton = (Button) this.findViewById(R.id.sendButton); sendButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { //实例化Intent对象 Intent intent = new Intent(); //设置Intent action的属性 intent.setAction("com.newcosoft.receive.MY_ACTION"); intent.putExtra("message", "土豆土豆,我是地瓜,收到请回答,收到请回答…"); //发出广播 sendBroadcast(intent); } }); } }
运行效果图:
2、系统广播事件的使用
除了上面我们自己定义的广播时间,Android系统还提供了一些自带的标准广播Action;这些广播是由系统自动发出的,我们只要直接接收即可。
系统自带标准广播action常量如下:
常量名称
常量值
意义
ACTION_BOOT_COMPLETED
android.intent.action. BOOT_COMPLETED
系统启动完成
ACTION_TIME_CHANGED
android.intent.action. TIME_CHANGED
时间改变
ACTION_DATE_CHANGED
android.intent.action. DATE_CHANGED
日期改变
ACTION_TIMEZONE_CHANGED
android.intent.action. TIMEZONE_CHANGED
时区改变
ACTION_BATTERY_LOW
android.intent.action. BATTERY_LOW
电量低
ACTION_MEDIA_EJECT
android.intent.action. MEDIA_EJECT
插入或拔出外部媒体
ACTION_MEDIA_BUTTON
android.intent.action. MEDIA_BUTTON
按下媒体按钮
ACTION_PACKAGE_ADDED
android.intent.action. PACKAGE_ADDED
添加包
ACTION_PACKAGE_REMOVED
android.intent.action. PACKAGE_REMOVED
删除包
对于具体怎么运用,直接上代码:
public class MyReceiver2 extends BroadcastReceiver{ /* (non-Javadoc) * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) */ @Override public void onReceive(Context context, Intent intent) { Log.e("MyReceiver2", "SUCCESS!!!"); Toast.makeText(context, "SUCCESS!!!", Toast.LENGTH_LONG).show(); } }
配置文件:
<receiver android:name="MyReceiver2"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver>
重新启动模拟器,在LogCat中会输出:
我们既可以在AndroidManifest中注册一个广播接收器,也可以通过代码的方式来注册。当然我们也可以注销一个广播接收器。一般我们是在Activity.onResume()方法中使用registerReceiver()方法来注册一个广播接收器,在Activity.onPause()中使用unregisterReceiver(r)来注销一个广播接收器。下面的代码片段显示了如何使用一个intentFilter注册Broadcast Receiver。
IntentFilter filter = new IntentFilter();
MyReceiver2 r = new MyReceiver2();
//注册Receiver
registerReceiver(r,filter);
经过多年潜心研究后,阿里云终于和天语合作推出了阿里云操作系统的手机。
对于这个阿里云操作系统,我认为是风险和机遇并存。
阿里云如果要做到突破需要克服以下几点困难:
1.知名度:如果提高手机系统的知名度,这个是阿里云需要做到的,毕竟现在是android,ios,webos,wm,黑莓系统的天下。通过淘宝来进行推广是他必须要做的,而且要通过阿里旺旺推送广告,同时在各类传统和网络媒体做广告(这个看oppo就可以知道),但是同样存在一个问题,是厂商来做还是阿里来做或者有一个合作的关系,但是这个合作关系会因为厂商的增加出现利益问题。
2.外围应用:通过移动和联通,联想的android衍生版,我们就知道,外围的应用是一个决定胜负的关键因素,怎么能提高开发者的兴趣,这需要生态系统利益链条的建立,缺一不可,发展不均衡也不行。因为阿里云短时间内就是一个中国化的操作系统,注定国外厂商和开发者对其兴趣会很低,导致应用和手机类型的减少,而且中国特色就是终端用户的软件免费,开发者的高收入,因为这个算发就是,我为android(兼容,这个可以暂时不考虑,当然专利因素会是隐患,而且还有未来升级的问题)或者ios开发,尽管提成很低,但是手机的基数很大。如果为阿里云开发,到底是否有利可图是每一个参与者考虑的因素。
3.专利因素:这个我上面说到了,阿里兼容android,但是本身google已经被专利因素困扰。这个是否会涉及到阿里?厂商也会考虑这个问题。
4.中国特色:中国国内现在的主流还是android和ios,阿里系统暂时还没有走出国门的打算,这个造成了一些国外厂商的担心,开发一个手机,专门为了国内的阿里,这个是很大的成本。无法达到商家的利益最大化。如果硬件系统通用,那么我估计又会有部分的人将手机刷为android的系统。毕竟我看的评测上面,真的没有什么必须要的东西在上面,我都在android上面可以找到。
5.是否吸取了教训:我记得淘宝原先就合作过手机厂商,阿尔卡特,结果大家都知道,相当于不了了之了。
6.合作厂商:现在找的厂商其实我的理解就是互相利用,因为天语在智能手机这块,已经被挤到后面了。他在原有的手机架构上修改系统为阿里云,这个对他来说成本不高,但是可能会因为这个系统打一个翻身仗,但是阿里云也借助了这个厂商实现了走向市场,不过我可以说一句,你没有天语输得起。我推荐可以合作的厂商是中兴或者华为或者给到深圳的山寨厂商。
7.系统开源:对于一套闭源的系统,开发者的兴趣甚至赶不上wm。但是开源我估计同样有很大的问题就是知识产权的困扰。
8.价格:要赔本赚吆喝,sony的ps3我记得就是不赚钱的。你要想将来赚钱就不要考虑眼前的投入。
除了投标和架构,好久没有写这么长的东西了.
不写了,太累.
总之,google,微软,hp,黑莓等巨头(甚至移动和联通)肯定不会让你真正好过.我希望的是国货威武。。。。。。
希望阿里系统能一路走下去。。。。
ps:
一直说阿里云不是android,但是我一直怀疑它就是android2.3或者2.2 呵呵,和lephone一个类型。