﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-流浪的蜗牛-随笔分类-Android</title><link>http://www.blogjava.net/vagasnail/category/48272.html</link><description>读历史、看小说、写程序都是我所爱。技术不好，头脑不灵光，靠的是兴趣。</description><language>zh-cn</language><lastBuildDate>Mon, 12 Mar 2012 22:14:00 GMT</lastBuildDate><pubDate>Mon, 12 Mar 2012 22:14:00 GMT</pubDate><ttl>60</ttl><item><title>Android五子棋算法简单实现</title><link>http://www.blogjava.net/vagasnail/archive/2012/03/06/371325.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Tue, 06 Mar 2012 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2012/03/06/371325.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/371325.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2012/03/06/371325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/371325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/371325.html</trackback:ping><description><![CDATA[<div>
<p style="background-color: #fafafa; font-family: Verdana, ����">有一天在网上看到一个Android的五子棋，该程序的作者的GoogleTalk: lixinso@gmail.com。遂下载下来看看，可以下棋，但是没有实现电脑下棋算法，所以我一时兴起花了几个小时加了个电脑下棋算法在里面，很简单。原作者的游戏绘制就不多说了，主要讲电脑下棋算法。</p>
<p style="background-color: #fafafa; font-family: Verdana, ����">1、准备一个数组表示当前棋盘，另外准备两个数组分别保存电脑和玩家每个可下点的坐标及其分数(棋型数组)，每个可下点包括4个方向的分数，分别是横、竖、左斜、右斜。<br /></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">private</span>&nbsp;<span style="color: #0000ff">int</span>[][]&nbsp;mChessTable&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;<span style="color: #0000ff">int</span>[CHESS_GRID][CHESS_GRID];&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;网格</span><span style="color: #008000"><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">private</span>&nbsp;<span style="color: #0000ff">int</span>[][][]&nbsp;computerTable&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;<span style="color: #0000ff">int</span>[CHESS_GRID][CHESS_GRID][CHECK_DIR];&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;电脑棋形表</span><span style="color: #008000"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">private</span>&nbsp;<span style="color: #0000ff">int</span>[][][]&nbsp;playerTable&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;<span style="color: #0000ff">int</span>[CHESS_GRID][CHESS_GRID][CHECK_DIR];&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;电脑棋形表<br /></span></div>
<p>&nbsp;<span style="background-color: #fafafa; font-family: Verdana, ����">2、每个可下点的4个方向分数判断，每个方向取当前点左右每边5个棋点的状态，然后分析它们是否构成五连、活四、活三等，每种棋型给予不同的分数。</span><span style="background-color: #eeeeee; color: #008080; font-size: 13px">&nbsp;&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px">&nbsp;</span><span style="background-color: #eeeeee; color: #008000; font-size: 13px">//</span><span style="background-color: #eeeeee; color: #008000; font-size: 13px">&nbsp;-------------------------------------------------------------</span></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px; border-image: initial"><span style="color: #008080">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000"></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;分析存在五连<br /></span><span style="color: #008080">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;tmpChess<br /></span><span style="color: #008080">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><br /><span style="color: #008080">&nbsp;&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">boolean</span>&nbsp;analyzeWulian(<span style="color: #0000ff">int</span>[]&nbsp;tmpChess,&nbsp;<span style="color: #0000ff">int</span>&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080">&nbsp;&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(<span style="color: #0000ff">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;-&nbsp;(i&nbsp;+&nbsp;1)]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(<span style="color: #0000ff">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;+&nbsp;i]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(count&nbsp;==&nbsp;4)&nbsp;{<br /><span style="color: #008080">&nbsp;24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;28</span>&nbsp;<br /><span style="color: #008080">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;30</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080">&nbsp;31</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;分析活四&nbsp;return&nbsp;是否存在活四<br /></span><span style="color: #008080">&nbsp;32</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080">&nbsp;33</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;tmpChess<br /></span><span style="color: #008080">&nbsp;34</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><br /><span style="color: #008080">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">boolean</span>&nbsp;analyzeHuosi(<span style="color: #0000ff">int</span>[]&nbsp;tmpChess,&nbsp;<span style="color: #0000ff">int</span>&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080">&nbsp;37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;i&nbsp;=&nbsp;0;<br /><span style="color: #008080">&nbsp;38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">boolean</span>&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;-&nbsp;(i&nbsp;+&nbsp;1)]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;-&nbsp;(i&nbsp;+&nbsp;1)]&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080">&nbsp;47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;+&nbsp;i]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;56</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;+&nbsp;i]&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080">&nbsp;57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;61</span>&nbsp;<br /><span style="color: #008080">&nbsp;62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(count&nbsp;==&nbsp;3&nbsp;&amp;&amp;&nbsp;isSpace)&nbsp;{<br /><span style="color: #008080">&nbsp;63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;65</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;67</span>&nbsp;<br /><span style="color: #008080">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;69</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080">&nbsp;70</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;分析活三&nbsp;return&nbsp;是否存在活三<br /></span><span style="color: #008080">&nbsp;71</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080">&nbsp;72</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;tmpChess<br /></span><span style="color: #008080">&nbsp;73</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><br /><span style="color: #008080">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">boolean</span>&nbsp;analyzeHuosan(<span style="color: #0000ff">int</span>[]&nbsp;tmpChess,&nbsp;<span style="color: #0000ff">int</span>&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080">&nbsp;76</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;i&nbsp;=&nbsp;0;<br /><span style="color: #008080">&nbsp;77</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">boolean</span>&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;78</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;-&nbsp;(i&nbsp;+&nbsp;1)]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;80</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;81</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;83</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;-&nbsp;(i&nbsp;+&nbsp;1)]&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;87</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;HALF_LEN;&nbsp;i++)&nbsp;{<br /><span style="color: #008080">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;+&nbsp;i]&nbsp;==&nbsp;isWho)&nbsp;{<br /><span style="color: #008080">&nbsp;90</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br /><span style="color: #008080">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;92</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">break</span>;<br /><span style="color: #008080">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;94</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(tmpChess[HALF_LEN&nbsp;+&nbsp;i]&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">&nbsp;97</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000ff">else</span>&nbsp;{<br /><span style="color: #008080">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isSpace&nbsp;=&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">&nbsp;99</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">100</span>&nbsp;<br /><span style="color: #008080">101</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(count&nbsp;==&nbsp;2&nbsp;&amp;&amp;&nbsp;isSpace)&nbsp;{<br /><span style="color: #008080">102</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">true</span>;<br /><span style="color: #008080">103</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080">104</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">false</span>;<br /><span style="color: #008080">105</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div></div>3、将玩家棋型数组和电脑棋型数组每个元素的分数比较，选出最大的五个放入一个降序排列的数组中。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px; border-image: initial"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000">/**</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;找到最佳点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;最佳点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">private</span>&nbsp;ChessPoint&nbsp;findBestPoint()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;i,&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChessPoint&nbsp;point;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;maxScore&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;tmpScore&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;CHESS_GRID;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;CHESS_GRID;&nbsp;j++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;电脑比较</span><span style="color: #008000"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;=&nbsp;computerTable[i][j][0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;computerTable[i][j][1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;computerTable[i][j][2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;computerTable[i][j][3];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(maxScore&nbsp;&lt;=&nbsp;tmpScore)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxScore&nbsp;=&nbsp;tmpScore;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;ChessPoint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.x&nbsp;=&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.y&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.score&nbsp;=&nbsp;maxScore;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertBetterChessPoint(point);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;玩家比较</span><span style="color: #008000"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;=&nbsp;playerTable[i][j][0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;playerTable[i][j][1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;playerTable[i][j][2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpScore&nbsp;+=&nbsp;playerTable[i][j][3];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>&nbsp;(maxScore&nbsp;&lt;=&nbsp;tmpScore)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxScore&nbsp;=&nbsp;tmpScore;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;ChessPoint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.x&nbsp;=&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.y&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point.score&nbsp;=&nbsp;maxScore;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertBetterChessPoint(point);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;Log.v("cmaxpoint&nbsp;=&nbsp;",&nbsp;""&nbsp;+&nbsp;cMaxScore);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Log.v("pmaxpoint&nbsp;=&nbsp;",&nbsp;""&nbsp;+&nbsp;pMaxScore);</span><span style="color: #008000"><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;analyzeBetterChess();<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div>4、处理降序排列的数组，如果第一个元素的分数&gt;=(必胜的条件的分数)，直接返回就可以了，如果小于就继续处理我们降序排列的数组每个元素，假设每个元素已下，然后判断其产生的后果，取出具有最佳后果的元素，并返回其值，作为电脑下棋点。判断每个元素的产生后果时，其实只需要处理其产生作用的棋盘范围就行了(以该元素位置为中心的正方形的棋盘范围，正方形边长为4 + 1 + 4，我用的10)，不必要处理搜索处理整个棋盘的棋子。<span style="background-color: #eeeeee; color: #0000ff; font-size: 13px">private</span><span style="background-color: #eeeeee; font-size: 13px">&nbsp;ChessPoint&nbsp;analyzeBetterChess()&nbsp;{</span><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(fiveBetterPoints[0].score&nbsp;&gt;&nbsp;30){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;fiveBetterPoints[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChessPoint&nbsp;betterPoint&nbsp;=&nbsp;<span style="color: #0000ff">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChessPoint&nbsp;tmpPoint&nbsp;=&nbsp;<span style="color: #0000ff">null</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;goodIdx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;i&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">int</span>&nbsp;startx,&nbsp;starty,&nbsp;endx,&nbsp;endy;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChessPoint[]&nbsp;fbpTmp&nbsp;&nbsp;=&nbsp;<span style="color: #0000ff">new</span>&nbsp;ChessPoint[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;5;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fbpTmp[i]&nbsp;=&nbsp;fiveBetterPoints[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">for</span>(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;5;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(fbpTmp[i]&nbsp;==&nbsp;<span style="color: #0000ff">null</span>)&nbsp;<span style="color: #0000ff">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mChessTable[fbpTmp[i].y][fbpTmp[i].x]&nbsp;=&nbsp;BLACK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearChessArray();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startx&nbsp;=&nbsp;fbpTmp[i].x&nbsp;-&nbsp;5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starty&nbsp;=&nbsp;fbpTmp[i].y&nbsp;-&nbsp;5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(startx&nbsp;&lt;&nbsp;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(starty&nbsp;&lt;&nbsp;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starty&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endx&nbsp;=&nbsp;startx&nbsp;+&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endy&nbsp;=&nbsp;starty&nbsp;+&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(endx&nbsp;&gt;&nbsp;CHESS_GRID){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endx&nbsp;=&nbsp;CHESS_GRID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(endy&nbsp;&gt;&nbsp;CHESS_GRID){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endy&nbsp;=&nbsp;CHESS_GRID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;analyzeChessMater(computerTable,&nbsp;BLACK,&nbsp;startx,&nbsp;starty,&nbsp;endx,&nbsp;endy);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;分析玩家的棋型</span><span style="color: #008000">////////////////////////////////////////////////////</span><span style="color: #008000">/</span><span style="color: #008000"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;analyzeChessMater(playerTable,&nbsp;WHITE,&nbsp;startx,&nbsp;starty,&nbsp;endx,&nbsp;endy);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpPoint&nbsp;=&nbsp;findBetterPoint(startx,&nbsp;starty,&nbsp;endx,&nbsp;endy);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(betterPoint&nbsp;!=&nbsp;<span style="color: #0000ff">null</span>){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">if</span>(betterPoint.score&nbsp;&lt;=&nbsp;&nbsp;tmpPoint.score){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;betterPoint&nbsp;=&nbsp;tmpPoint;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goodIdx&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">else</span>{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;betterPoint&nbsp;=&nbsp;tmpPoint;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goodIdx&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mChessTable[fbpTmp[i].y][fbpTmp[i].x]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpPoint&nbsp;=&nbsp;<span style="color: #0000ff">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;betterPoint&nbsp;=&nbsp;<span style="color: #0000ff">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">return</span>&nbsp;fbpTmp[goodIdx];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}</div>OK，差不多就这样，看<a href="http://vagascanner.googlecode.com/files/Gobang_01.zip">源码</a>吧，应该还有问题，其实速度还算可以。我要睡觉了，明天还要上班。 <img src ="http://www.blogjava.net/vagasnail/aggbug/371325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2012-03-06 12:53 <a href="http://www.blogjava.net/vagasnail/archive/2012/03/06/371325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发生INSTALL_FAILED_UPDATE_INCOMPATIBLE无法安装程序</title><link>http://www.blogjava.net/vagasnail/archive/2011/09/22/359210.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Wed, 21 Sep 2011 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2011/09/22/359210.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/359210.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2011/09/22/359210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/359210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/359210.html</trackback:ping><description><![CDATA[安装程序发生<div style="display: inline-block; "></div><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">INSTALL_FAILED_UPDATE_INCOMPATIBLE错误，</span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><br /></span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">只需要将 /data/data/XXX删掉,XXX是包名，用adb shell进去删。</span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><br /></span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">删掉&nbsp;</span><div style="display: inline-block; "></div><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">/data/app下指定的apk文件<br />在DDMS中导出<div style="display: inline-block; "></div></span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">shared-user</span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">/data/system/packages.xml文件，删除掉指定程序的包名相关的记录，<br />特别是指定的<span style="font-size: 12px; ">shared-user节点。</span><br />覆盖手机中的<div style="display: inline-block; "></div></span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">/data/system/packages.xml。重启手机，就可以安装程序了。</span><span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, sans-serif; font-size: 13px; line-height: 17px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "></span><img src ="http://www.blogjava.net/vagasnail/aggbug/359210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2011-09-22 00:02 <a href="http://www.blogjava.net/vagasnail/archive/2011/09/22/359210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何开始NDK</title><link>http://www.blogjava.net/vagasnail/archive/2011/08/26/357382.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Fri, 26 Aug 2011 15:56:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2011/08/26/357382.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/357382.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2011/08/26/357382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/357382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/357382.html</trackback:ping><description><![CDATA[<div>
<div>首先需要一个集成了Android SDK的eclipse，这就不多说了。<br />
1, 首先我是在WinXP下面进行的，所以要安装Cygwin(这是一个在Windows下面运行linux/unix的工具，而你不需要安装相应的OS)，请安装最新版本，在下载包的时候</div>
<div>请注意下载，</div>
<div>autoconf2.1&nbsp;</div>
<div>automake1.10&nbsp;</div>
<div>binutils&nbsp;</div>
<div>gcc-core&nbsp;</div>
<div>gcc4-core&nbsp;</div>
<div>gdb&nbsp;</div>
<div>pcre&nbsp;</div>
<div>pcre-devel&nbsp;</div>
<div>这些必须下载。</div>
<div>安装完成后，</div>
<div>打开Gygwin，输入</div>
<div>make -v</div>
<div>gcc -v</div>
<div>检查是否安装成功，否则点击setup.exe更新。</div>
<div>2，下载NDK</div>
<div>3，在Cygwin的home/用户/.bashrc文件最后加上</div>
<div>NDK=/cygdrive/d/android-sdk-windows/android-ndk-r6</div>
<div>#向外指定该变量</div>
<div>export NDK</div>
<div></div>
<div>d/android-sdk-windows/android-ndk-r6是你的NDK的目录d代表盘符。</div>
<div>输入cd $NDK检查是否成功。如果成功就会跳转到前面指定的目录。</div>
<div></div>
<div>4,将Cygwin的bin目录和ndk的安装目录都加入的path环境变量的后面。</div>
<div></div>
<div>5,编译hello-jni示例，在Cygwin中进入到samples\hello-jni\jni目录，</div>
<div>&nbsp; 执行$NDK/ndk-build编译c程序。编译后会生成libs\armeabi\libhello-jni.so</div>
<div>&nbsp; OK。</div>
<div>6, 可以在eclipse中安装cdt，这样可以更方便的编写c/c++程序。</div>
<div>7, Eclipse 的生成器。以下是我的配置： (感谢<a href="http://mp870601.blog.163.com/blog/static/13675745320107895328980/">枫</a>)</div>
<div>&nbsp; &nbsp;右击你的项目，选择properties</div>
<div>&nbsp; &nbsp;在左边的列表中选择Builders</div>
<div>&nbsp; &nbsp;在右侧，点击 New&#8230; 按钮&nbsp;</div>
<div>&nbsp; &nbsp;在列表框，选择Program 作为配置类型；点击OK 按钮，进入下一个配置对话框。&nbsp;</div>
<div>&nbsp; &nbsp;命名 name 为NDK Builder &nbsp;</div>
<div>&nbsp; &nbsp;选择 Location 为d:\cygwin\bin\bash.exe&nbsp;</div>
<div>&nbsp; &nbsp;Working Directory 为d:\cygwin\bin&nbsp;</div>
<div>&nbsp; &nbsp;Arguments 为：&nbsp;</div>
<div>&nbsp; &nbsp;--login -c "cd /cygdrive/D/android_works/HelloJni/jni &amp;&amp; ndk-build"</div>
<div>&nbsp; &nbsp;确保在 login 前有两个连接号， -c 后面的引号。&nbsp;</div>
<div>&nbsp; &nbsp;接着打开 refresh 的 tab 面板：&nbsp;</div>
<div>&nbsp; &nbsp;选中Refresh resources upon completion</div>
<div>&nbsp; &nbsp;选择Specific resources</div>
<div>&nbsp; &nbsp;点击Specify resources 按钮，选择你项目的 lib 目录，如果你没有lib目录，那么使用默认选择The entire workspace即可。</div>
<div>&nbsp; &nbsp;选中Recursively include sub-folders &nbsp;</div>
<div>&nbsp; &nbsp;接着打开Build Options 的 tab 面板：&nbsp;</div>
<div>&nbsp; &nbsp;选中Allocate Console&nbsp;</div>
<div>&nbsp; &nbsp;选中Launch in background&nbsp;</div>
<div>&nbsp; &nbsp;选中Run the builder After a Clean&nbsp;</div>
<div>&nbsp; &nbsp;选中Run the builder During manual builds&nbsp;</div>
<div>&nbsp; &nbsp;选中Run the builder During auto builds&nbsp;</div>
<div>&nbsp; &nbsp;选中Specify working set of relevant resources&nbsp;</div>
<div>&nbsp; &nbsp;点击Specify Resources 按钮，选择你项目的 JNI 目录，并包含所有的文件。&nbsp;</div>
<div>&nbsp; &nbsp;点击OK 按钮。&nbsp;</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<img src ="http://www.blogjava.net/vagasnail/aggbug/357382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2011-08-26 23:56 <a href="http://www.blogjava.net/vagasnail/archive/2011/08/26/357382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ksoap2 for android 调用WebService</title><link>http://www.blogjava.net/vagasnail/archive/2011/05/07/349751.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Sat, 07 May 2011 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2011/05/07/349751.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/349751.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2011/05/07/349751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/349751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/349751.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1，建立WebService服务器&nbsp;&nbsp;&nbsp; 这里使用Apache的axis2来建立WebService，并使用RPC的方式。&nbsp;&nbsp;&nbsp; (1) 首先下载Axis，然后将解压后的webapp下面的东东拷贝到Tomcat的webapp下面，目录为/webapp/axis。去掉一些不相干的部署文本，如果classes下面的东东。&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/vagasnail/archive/2011/05/07/349751.html'>阅读全文</a><img src ="http://www.blogjava.net/vagasnail/aggbug/349751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2011-05-07 19:12 <a href="http://www.blogjava.net/vagasnail/archive/2011/05/07/349751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android中使用SAX来解析XML</title><link>http://www.blogjava.net/vagasnail/archive/2011/04/17/348436.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Sun, 17 Apr 2011 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2011/04/17/348436.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/348436.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2011/04/17/348436.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/348436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/348436.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp; 在Java中使用SAX来解析XML，这样好像耗内存会比DOM方式少些，适合于手持设备上的XML处理。&nbsp;&nbsp;&nbsp; 用SAX处理以下XML文件：&nbsp;&nbsp;&nbsp;1&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;&nbsp;2&lt;citys&...&nbsp;&nbsp;<a href='http://www.blogjava.net/vagasnail/archive/2011/04/17/348436.html'>阅读全文</a><img src ="http://www.blogjava.net/vagasnail/aggbug/348436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2011-04-17 13:40 <a href="http://www.blogjava.net/vagasnail/archive/2011/04/17/348436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android的Widget</title><link>http://www.blogjava.net/vagasnail/archive/2011/04/10/348025.html</link><dc:creator>vagasnail</dc:creator><author>vagasnail</author><pubDate>Sun, 10 Apr 2011 15:52:00 GMT</pubDate><guid>http://www.blogjava.net/vagasnail/archive/2011/04/10/348025.html</guid><wfw:comment>http://www.blogjava.net/vagasnail/comments/348025.html</wfw:comment><comments>http://www.blogjava.net/vagasnail/archive/2011/04/10/348025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vagasnail/comments/commentRss/348025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vagasnail/services/trackbacks/348025.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Android的AppWidget的概念不好理解啊，我也不知道理解得对不对，先记在这里，以免以后又忘记了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) 建立一个Android工程，用eclispse吧，下一步，下一步的就不多说了。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(2) 在res/xml目录下面建立一个xml文件。命名随便吧。写下如下内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">appwidget-provider<br />
</span><span style="color: #008080">3</span><span style="color: #800000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #ff0000">xmlns:android</span><span style="color: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">4</span><span style="color: #ff0000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;android:initialLayout</span><span style="color: #0000ff">="@layout/widget_layout_small"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">5</span><span style="color: #ff0000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;android:minWidth</span><span style="color: #0000ff">="72dip"</span><span style="color: #ff0000">&nbsp;android:minHeight</span><span style="color: #0000ff">="72dip"</span><span style="color: #ff0000">&nbsp;android:updatePeriodMillis</span><span style="color: #0000ff">="3600000"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">appwidget-provider</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里是定义一个appwidget-provider，Android系统从这里认为该程序是一个widget程序。android:initialLayout指定布局文件，也就是在res/layout目录下的那些个xml文件；android:updatePeriodMillis知道更新周期，单位为毫秒；还有一个android:configure，这个是可选的，如果你的widget事先要启动一个Activity，就需要在这里指定一个Activity，显然我们这里不需要。他就是一个AppWidgetProviderInfo类的描述信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp; (3) 写布局文件，这个就不多说了。<br />
&nbsp;&nbsp;&nbsp;&nbsp; (4) appwidget-provider，定义一个类，从AppWidgetProvider类继承，他实际是一个BroadcastReceiver，系统使用它和Widget界面进行交互。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;cn.vaga.today;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Calendar;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.app.PendingIntent;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.appwidget.AppWidgetManager;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.appwidget.AppWidgetProvider;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.content.ComponentName;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.content.Context;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.content.Intent;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.graphics.Canvas;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.text.format.Time;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;android.widget.RemoteViews;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TodayDateSmall&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;AppWidgetProvider<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img id="Codehighlighter1_429_2493_Open_Image" onclick="this.style.display='none'; Codehighlighter1_429_2493_Open_Text.style.display='none'; Codehighlighter1_429_2493_Closed_Image.style.display='inline'; Codehighlighter1_429_2493_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_429_2493_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_429_2493_Closed_Text.style.display='none'; Codehighlighter1_429_2493_Open_Image.style.display='inline'; Codehighlighter1_429_2493_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_429_2493_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_429_2493_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;当这个AppWidget提供者&nbsp;被要求提供RemoteViews一系列的AppWidgets，这个方法作为ACTION_APPWIDGET_UPDATE<br />
</span><span style="color: #008080">18</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;广播回复时被调用<br />
</span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;每次更新AppWidget时候调用</span><span style="color: #008000"><br />
</span><span style="color: #008080">20</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_661_908_Open_Image" onclick="this.style.display='none'; Codehighlighter1_661_908_Open_Text.style.display='none'; Codehighlighter1_661_908_Closed_Image.style.display='inline'; Codehighlighter1_661_908_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_661_908_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_661_908_Closed_Text.style.display='none'; Codehighlighter1_661_908_Open_Image.style.display='inline'; Codehighlighter1_661_908_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;onUpdate(Context&nbsp;context,&nbsp;AppWidgetManager&nbsp;appWidgetManager,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;appWidgetIds)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_661_908_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_661_908_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;得到更新后的RemoteViews</span><span style="color: #008000"><br />
</span><span style="color: #008080">23</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemoteViews&nbsp;updateView&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;buildUpdate(context);<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">更新Widget的RemoteViews</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appWidgetManager.updateAppWidget(appWidgetIds,&nbsp;updateView);<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">.onUpdate(context,&nbsp;appWidgetManager,&nbsp;appWidgetIds);<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img id="Codehighlighter1_945_1048_Open_Image" onclick="this.style.display='none'; Codehighlighter1_945_1048_Open_Text.style.display='none'; Codehighlighter1_945_1048_Closed_Image.style.display='inline'; Codehighlighter1_945_1048_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_945_1048_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_945_1048_Closed_Text.style.display='none'; Codehighlighter1_945_1048_Open_Image.style.display='inline'; Codehighlighter1_945_1048_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String[]&nbsp;months&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_945_1048_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_945_1048_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">一月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">二月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">三月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">四月</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">五月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">六月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">七月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">八月</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">九月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">十月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">十一月</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">十二月</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000">;<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img id="Codehighlighter1_1114_2491_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1114_2491_Open_Text.style.display='none'; Codehighlighter1_1114_2491_Closed_Image.style.display='inline'; Codehighlighter1_1114_2491_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1114_2491_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1114_2491_Closed_Text.style.display='none'; Codehighlighter1_1114_2491_Open_Image.style.display='inline'; Codehighlighter1_1114_2491_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;RemoteViews&nbsp;buildUpdate(Context&nbsp;context)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1114_2491_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1114_2491_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemoteViews&nbsp;updateView&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;这个Time更快<br />
</span><span style="color: #008080">37</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Time&nbsp;time&nbsp;=&nbsp;new&nbsp;Time();<br />
</span><span style="color: #008080">38</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;现在<br />
</span><span style="color: #008080">39</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">time.setToNow();</span><span style="color: #008000"><br />
</span><span style="color: #008080">40</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;cal&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;month&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;months[cal.get(Calendar.MONTH)];<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;得到RemoteViews</span><span style="color: #008000"><br />
</span><span style="color: #008080">43</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateView&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RemoteViews(context.getPackageName(),&nbsp;R.layout.widget_layout_small);<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置View的内容<br />
</span><span style="color: #008080">45</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;日期</span><span style="color: #008000"><br />
</span><span style="color: #008080">46</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateView.setTextViewText(R.id.Date,&nbsp;String.valueOf(cal.get(Calendar.DATE)));<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;月</span><span style="color: #008000"><br />
</span><span style="color: #008080">48</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateView.setTextViewText(R.id.Month,&nbsp;month);<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lunar&nbsp;lunar&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Lunar(cal);<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateView.setTextViewText(R.id.Lunar,lunar.toString());<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;OK，这个一个运行用的Intent啦<br />
</span><span style="color: #008080">52</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;加下面这段应该只是为了让Widget相应click事件吧</span><span style="color: #008000"><br />
</span><span style="color: #008080">53</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent&nbsp;launchIntent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Intent();<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置处理该Intent的组件，这里是android自带的日期启动组件</span><span style="color: #008000"><br />
</span><span style="color: #008080">55</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;launchIntent.setComponent(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ComponentName(</span><span style="color: #000000">"</span><span style="color: #000000">com.android.calendar</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">com.android.calendar.LaunchActivity</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置该Itent为主进入点</span><span style="color: #008000"><br />
</span><span style="color: #008080">57</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;launchIntent.setAction(Intent.ACTION_MAIN);<br />
</span><span style="color: #008080">58</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);<br />
</span><span style="color: #008080">59</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);<br />
</span><span style="color: #008080">60</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;启动指定的Intent的Activity</span><span style="color: #008000"><br />
</span><span style="color: #008080">61</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PendingIntent&nbsp;intent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;PendingIntent.getActivity(context,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;launchIntent,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
</span><span style="color: #008080">62</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;监听点击事件</span><span style="color: #008000"><br />
</span><span style="color: #008080">63</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateView.setOnClickPendingIntent(R.id.SmallBase,&nbsp;intent);<br />
</span><span style="color: #008080">64</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;updateView;<br />
</span><span style="color: #008080">65</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">66</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">67</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">68</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp; 他有四个方法：onDeleted、onEnabled、onDisabled、onUpdate，我们这里只实现了最主要的onUpdate方法，他在周期更新的时候调用。每次调用就用appWidgetManager来更新Widget(生成一个RemoteView)。appWidgetManager是系统生成的用于管理Widget的对象，我们不需要进行管理，它会向AppWidgetProvider发通知，他会更新Widget的UI。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5) AndroidManifest.xml&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">manifest&nbsp;</span><span style="color: #ff0000">xmlns:android</span><span style="color: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #ff0000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package</span><span style="color: #0000ff">="cn.vaga.today"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #ff0000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:versionCode</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #ff0000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:versionName</span><span style="color: #0000ff">="1.0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">application&nbsp;</span><span style="color: #ff0000">android:icon</span><span style="color: #0000ff">="@drawable/icon"</span><span style="color: #ff0000">&nbsp;android:label</span><span style="color: #0000ff">="@string/app_name_small"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;订阅指定的BroadcastReceiver&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">receiver&nbsp;</span><span style="color: #ff0000">android:label</span><span style="color: #0000ff">="@string/app_name_small"</span><span style="color: #ff0000">&nbsp;android:name</span><span style="color: #0000ff">=".TodayDateSmall"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">intent-filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;就只处理更新的广播&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">action&nbsp;</span><span style="color: #ff0000">android:name</span><span style="color: #0000ff">="android.appwidget.action.APPWIDGET_UPDATE"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">action</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">intent-filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta-data&nbsp;</span><span style="color: #ff0000">android:name</span><span style="color: #0000ff">="android.appwidget.provider"</span><span style="color: #ff0000">&nbsp;android:resource</span><span style="color: #0000ff">="@xml/widget_small"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">meta-data</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">receiver</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">application</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">uses-sdk&nbsp;</span><span style="color: #ff0000">android:minSdkVersion</span><span style="color: #0000ff">="7"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">manifest</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在这里注册AppWidgetRecever指定其处理的Intent的Action为android.appwidget.action.APPWIDGET_UPDATE。当然还要个AppWidgetRecever指定它的描述文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_small"&gt;&lt;/meta-data&gt;，这是很必要的，否则Android也不会知道这个Widget到底是如何定义的了。<br />
<img src ="http://www.blogjava.net/vagasnail/aggbug/348025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vagasnail/" target="_blank">vagasnail</a> 2011-04-10 23:52 <a href="http://www.blogjava.net/vagasnail/archive/2011/04/10/348025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>