wifi robot的安卓端开发经验教训

来源:互联网 发布:php环境集成包下载 编辑:程序博客网 时间:2024/05/16 02:29

这一段应学妹要求,做了一个关于物联网的wifi robot的安卓端应用,其中很多的代码段都是参考网上的,没有什么原创性可言,这里我就发一些自己遇到的问题,给大家一点借鉴。

应用功能是 首先一个欢迎界面,几秒钟后跳转到状态显示页面,显示下位机传来的温度,PH等数值,左右滑动进入视频显示界面,并有舵机的控制按键。

其中wifi的刷机教程网上有很多,这里不赘述。

遇见的第一个问题:界面跳转时自动弹出->原因:没有在AndroidMainfest.xml中添加自定义的Activitiy,红色为自定义的部分。

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.lessonone"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="18" /><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.lessonone.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <span style="color:#ff0000;"><activity            android:name=".statusActivity"            >                    </activity>        <activity            android:name=".controlActivity"            >                    </activity></span>    </application></manifest>

第二个问题:反编译的解读问题:

因为参考了一个APP,遇到了一些反编译的问题。

1.像类似这种语句,其内部的参数可以在R中查找。

super.onCreate(paramBundle);    setContentView(2130903042);
2.这里有无用的局部变量

TextView localTextView1 = (TextView)findViewById(2131099659);this.tempTextView = localTextView1;
可以改写为
tempTextView=(TextView)findViewById(2131099659);
其中tempTextView为自定义的本地变量,数字是ID号。

3.内部方法

package dennis.android;import android.view.View;import android.view.View.OnClickListener;import dalvik.annotation.EnclosingMethod;@EnclosingMethodclass ControlActivity$7  implements View.OnClickListener{  public void onClick(View paramView)  {    SocketThread localSocketThread = this.this$0.socketThread;    byte[] arrayOfByte = ControlActivity.access$6(this.this$0);    localSocketThread.send(arrayOfByte);  }}
经常有人问到EnclosingMethod 的问题,网上的解答也不多。这里会在左边的项目栏中出现一个新的Activity,其实是一个内部的方法调用。

这里的access指的是其他类的外部方法。实际的代码差不多如下:

rightButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbyte[] ArrayofByte = CMD_RIGHT;// TODO Auto-generated method stubsocketThread.send(ArrayofByte);}});

第三个问题:其实这个就显得我有些弱智了。记得在自定义的surfaceView类里添加while(ture)保证画面能刷新。。。,其中丑陋的变量部分请忽略。
<span style="color:#ff6666;">while(true)</span>    {try {videoUrl=new URL(url);conn=(HttpURLConnection)videoUrl.openConnection();conn.setDoInput(true);conn.connect();inputStream=conn.getInputStream();bmpBitmap=BitmapFactory.decodeStream(inputStream);Bitmap localBitmap=bmpBitmap;int i=ScreenW;int j=ScreenH;Bitmap dstmBitmap=Bitmap.createScaledBitmap(localBitmap, i, j,true);bmpBitmap=dstmBitmap;canvas=new Canvas(bmpBitmap);canvas=surfaceHolder.lockCanvas();canvas.drawBitmap(bmpBitmap, 0,0,null);surfaceHolder.unlockCanvasAndPost(canvas);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}
第四个问题:使用自定义的surfaceview不显示,会黑屏。记得在红色部分换上自定义的类代替原来的控件。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <<span style="color:#ff0000;">com.example.lessonone.MySurfaceView</span>        android:id="@+id/surfaceView1"        android:layout_width="fill_parent"        android:layout_height="fill_parent" />    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentLeft="true"        android:layout_marginBottom="35dp"        android:layout_marginLeft="53dp"        android:text="Button" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/button1"        android:layout_alignBottom="@+id/button1"        android:layout_alignParentRight="true"        android:layout_marginRight="38dp"        android:text="Button" /></RelativeLayout>
最后一个问题:额,不用忘了入网许可,在第一个XML中有体现。


本人属于菜鸟级别,有什么说错的地方,敬请指导。






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老婆对我没感情怎么办 老婆要跟我离婚怎么办 眼睛里进了沙子怎么办 耳塞孔进沙子了怎么办 斜挎包链子长了怎么办 爱上大15岁大叔怎么办 老板不给发工资怎么办 4个月婴儿感冒了怎么办 9个月宝宝感冒了怎么办 婆婆去世了我该怎么办 腰疼得睡不着觉怎么办 长期抱孩子腰疼怎么办 抱孩子累的腰疼怎么办 带孩子带的腰疼怎么办 生完孩子后便秘怎么办 生完宝宝下面松怎么办 坐完月子后腰疼怎么办 生完宝宝腰疼怎么办 生完小孩后腰痛怎么办 生完小孩痔疮痛怎么办 生完孩子阴松弛怎么办 生完孩子乳房松弛怎么办 生完宝宝后腰痛怎么办 顺产的过程很疼怎么办 生完孩子想离婚怎么办 刨腹产后胃胀气怎么办 月子里宝宝涨肚怎么办 肠鸣放屁多便秘怎么办 趴着睡觉胃胀气怎么办 备孕三个月了还是没怀上怎么办 月子里喂奶腰疼怎么办 生完孩子子宫疼怎么办 记账凭证写错了怎么办 饥荒精神值为0怎么办 抓不住温暖我能怎么办 父亲打母亲我该怎么办 父亲对母亲家暴怎么办 摊上家暴的父亲怎么办 家暴警察不处理怎么办 父亲把母亲打了怎么办 u盘的文件打不开怎么办