Kindle Fire的一些设置

 

 

1、中文化,很简单,安装一个区域设置补丁就可以了,参考:http://bbs.1pad.cn/thread-5603-1-1.html

2、ROOT,要改驱动,然后用SuperOneClick进行ROOT,参考:

http://bbs.1pad.cn/thread-6020-1-1.html

3、中文输入,要点是改/data/data/com.android.providers.settings/databases/settings.db这个数据库中的数据。

参考:http://www.92kindle.com/thread-4342-1-1.html

4、安装ANDROID MARKET,参考:http://bbs.1pad.cn/thread-7147-1-1.html

5、屏蔽AMAZON的应用,使用ES/RE浏览器,将/system/app/目录下的amazon*.apk文件改扩展名。

这个操作完成以后就可以玩植物大战僵尸、极品飞车等游戏了。

6、防止系统自动更新,将/system/app/目录下的OTASilentInstall.apk文件改扩展名。

7、打开笔记本等本地网络上的文件,使用ES浏览器可以打开局域网的电脑,参考:http://bbs.1pad.cn/thread-6948-1-1.html

 

 

Categories: Uncategorized | 26 Comments

Android获得mp3文件信息

<div>

public boolean GetMp3Info(String mpFullname)
{
try
{
mpFilename = "";
mpTitle = "";
mpArtist = "";
mpAlbum = "";
mpDuration = "";
mpSize = "0";
String selection = MediaStore.Audio.Media.DATA + " = ?"; // like
//String path="/mnt/sdcard/music";
String[] selectionArgs = {"/mnt" + mpFullname};
//String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
String [] projection = {
//MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.SIZE
//MediaStore.Audio.Media.DATA, // --&gt; Location
//MediaStore.Audio.Media.DISPLAY_NAME,
};

Cursor cursor = null;
cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null);
//	 Cursor cursor2 = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,
//	 null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER)
mpTitle = cursor.getString(0).toString();
mpArtist = cursor.getString(1).toString();
mpAlbum = cursor.getString(2).toString();
mpDuration = cursor.getString(3).toString();
mpSize = cursor.getString(4).toString();
//cursor.getString(5).toString();
return true;
}
catch (Exception e)
{
return false;
}
} // GetMp3Info() ends

</div>
Categories: Uncategorized | 115 Comments

Android:下载与线程控制

最近在写的一个APP涉及到下载。
目前想到有两种设计方法。
方法一:建一个下载线程,与主线程保持同步。
1、启动下载线程。
2、在主线程利用synchronized锁定下载线程,前用wait()方法让主线程等待。// wait() = sleep() until notify();
3、下载线程利用synchronized加锁,操作完成后用notify()方法通知主线程释放。
这种方法的优点是可以保持2个线程的同步,缺点是下载线程未完成时主线程的界面冻结。
方法二:下载线程与主线程异步操作,利用Handler向Activity传递消息。
1、创建一个Handler类,重写handleMessage方法。
2、启动下载线程。
3、下载线程利用sendMessage(message)方法向Activity发送消息。
4、Handler.handleMessage()在处理下载完成的消息时,继续后续的动作。
这种方法的优点是方便在主界面显示进度条,也可以利用按钮中止下载。
缺点是主界面的一些业务逻辑要根据下载的状态进行一些判断。
Categories: Uncategorized | 4 Comments

Android MediaPlayer:进度条、静音

//进度条:
    Runnable start = new Runnable()
    {
		@Override
		public void run()
		{
			// TODO Auto-generated method stub
			mp.start(); // start mediaplayer
			handler.post(updatesb);
			//use a handler to update SeekBar
		}
    };

    Runnable updatesb = new Runnable()
    {
		@Override
		public void run()
		{
			// TODO Auto-generated method stub
			SeekBar1.setProgress(mp.getCurrentPosition());
			handler.postDelayed(updatesb, 100);
		}
    };
//然后用handler.post(start)启动播放器。

//静音:
	btnMute.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
    	  //System.out.println("Button Mute");
          if (SoundEnabled)
          {
              audioManager.setStreamMute(AudioManager.STREAM_MUSIC , true);
              btnMute.setText(" Unmute ");
          }
          else
          {
              audioManager.setStreamMute(AudioManager.STREAM_MUSIC , false);
              btnMute.setText("  Mute  ");
          }
          SoundEnabled = !SoundEnabled;
      }
    }); // btnMute onClick ends	
Categories: Uncategorized | 7 Comments

Android Activity的生命周期

 

public class Activity extends ApplicationContext {

protected void onCreate(Bundle savedInstanceState);

protected void onStart();

protected void onRestart();

protected void onResume();

protected void onPause();

protected void onStop();

protected void onDestroy();

}

Categories: Uncategorized | 15 Comments

Android BroadcastReceiver

1. 在AndroidManifest.xml定义相关权限:

<uses-permission android:name=”android.permission.WAKE_LOCK” />

 

2. 在Main Activity中建立AlarmManager:

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);

pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.set(AlarmManager.RTC_WAKEUP, Schedule_Time, pendingIntent);

 

3. 在Receiver中建立响应:


public class AlarmReceiver extends BroadcastReceiver

{

@Override

public void onReceive(Context context, Intent intent)

{

Intent i = new Intent(context, ActionActivity.class);

Bundle bundleRet = new Bundle();

bundleRet.putString("STR_CALLER", "");

i.putExtras(bundleRet);

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(i);

}

}
Categories: Uncategorized | 22 Comments

关于MapReduce

这两天在读More Joel on Software,其中有一节讲到MapReduce的原理,于是查了WIKI,读了一些博客,大致了解了其原理。
考虑到我准备写一个翻译MES系统界面的程序,可以借鉴MapReduce的方法。
大致地说,Map是将一个大的作业转化为若干个小的、可分发、可并行的作业。
Reduce是一个逻辑独立的作业,每次作业都能减少总体的运算量。
举例来说,这个翻译是将一个XML文件中对应位置的英语文本翻译为中文。
按照MapReduce的方法,大致分为以下4个步骤:
1、Map,将所有要翻译的句子提取出来,存入数组。
2、Sort,将数组里的数据排序。
3、Reduce,这里有2个函数:
第1个函数取字符串中匹配起始字符,字典中可查到的最长单词,如查Work Station而不是Work。
第2个函数将最小单位字符串查询字典进行翻译。
4、Union,按既定的顺序拼接翻译好的数组。
Categories: Uncategorized | 16 Comments

Select From Amazon SimpleDB

 

 

//1. Creating a SimpleDB Client

AWSCredentials credentials = new BasicAWSCredentials( ACCESS_KEY, SECRET_KEY );

AmazonSimpleDBClient sdbClient = new AmazonSimpleDBClient( credentials);

sdbClient.setEndpoint(“sdb.us-west-1.amazonaws.com”); // to define Data Center Region

 

//2. Select

String nextToken = null;

SelectRequest selectRequest = new SelectRequest( “select * from myDomain” ).withConsistentRead( true );

selectRequest.setNextToken( nextToken );

SelectResult response = sdbClient.select( selectRequest );

nextToken = response.getNextToken();

 

Categories: Uncategorized | 9 Comments

Android连接Amazon SimpleDB

 

 

1. 安装AWS Toolkit for Eclipse:http://aws.amazon.com/eclipse/

安装完成以后在Eclipse中增加了一个Database Development perspective视图,可以对SimpleDB进行一些简单的维护操作,通过SQL Scrapbook进行SQL查询。

2. 安装AWS SDK for Android:http://aws.amazon.com/sdkforandroid/

此SDK包含了所有的库和部分示例代码及文档,注意使用前需注册外部类库。

这样就可以象操作本地数据库一样进行SimpleDB的读写了。

 

 

Categories: Uncategorized | 46 Comments

Android时间同步

1. 系统函数SystemClock.setCurrentTimeMillis()用于设置系统时间,需要<uses-permission android:name=”android.permission.APPROPRIATE” />权限,但是出于安全考虑,已被GOOGLE禁用。

2. 对于ROOT手机,可以用<uses-permission android:name=”android.permission.WRITE_SETTINGS” />打开权限。

3. 另一个变通的方法是,先查询本地时间,再查询NTP服务器的UTC,从而得到两个时间的差值。

在多台手机之间,通过补偿差值,从而实现多台手机之间的事件同步。

 

Categories: Uncategorized | 4 Comments