当前位置: 编程技术>移动开发
本页文章导读:
▪TextView 展示网络图片 TextView 显示网络图片
TextView 显示本地图片,或访问网络图片资源
package com.hilary;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import android.app.Activity;
import andro.........
▪ AudioManager整合系统音量(转) AudioManager调整系统音量(转)
前面讲过AudioManager可以修改系统的情景模式,其实看它名字,就知道Android系统的音量也是由它管理的.下面介绍几个AudioManager的几个音量调整方面的方法.首先是得.........
▪ apk跟odex的合并教程 apk和odex的合并教程
adb push ./dexopt-wrapper /data/local adb shell cd /data/local ./dexopt-wrapper test.apk test.odex上述的步骤是将apk转化为odex格式文件。其中用到的dexopt-wrapper 附件中有。中间可能回遇到permi.........
[1]TextView 展示网络图片
来源: 互联网 发布时间: 2014-02-18
TextView 显示网络图片
TextView 显示本地图片,或访问网络图片资源
package com.hilary;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.hilary.utils.AsyncImageLoader;
public class Main extends Activity {
Button btn2;
ImageView imge;
Thread thread = null;
Runnable runnable = null;
TextView textView = null;
Drawable dra = null;
private AsyncImageLoader asyncImageLoader;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
asyncImageLoader = AsyncImageLoader.getAsyncImageLoader();
btn2 = (Button) findViewById(R.id.btn2);
textView = (TextView) findViewById(R.id.show_tv);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Handler handler = new Handler();
// handler.post(runable);
textView.setText(Html.fromHtml( _readFile("/sdcard/test2.txt"), imgGetter, null));
}
});
}
public String _readFile(String str) {
StringBuffer sb = new StringBuffer();
File file = new File(str);
try {
FileReader is = new FileReader(file);
while (is.ready()) {
int c = is.read();
sb.append((char) c);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
ImageGetter imgGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
System.out.println("***" + source);
//异步加载图片
// Drawable drawable = asyncImageLoader.loadDrawable(
// source, new ImageCallback() {
//
// @Override
// public void imageLoaded(Drawable imageDrawable,
// String imageUrl) {
// if (imageDrawable == null) {
// } else {
// imageDrawable.setBounds(0, 0, imageDrawable.getIntrinsicWidth(), imageDrawable
// .getIntrinsicHeight());
// }
// dra = imageDrawable;
// }
// });
// if(source.equals("1")){
// drawable = Main.this.getResources().getDrawable(R.drawable.aa);
// } else if (source.equals("2")){
// drawable = Main.this.getResources().getDrawable(R.drawable.b);
// } else {
// drawable = Main.this.getResources().getDrawable(R.drawable.icon);
// }
URL url;
Drawable drawable = null;
try {
url = new URL(/blog_article/source/index.html);
drawable = Drawable.createFromStream(url.openStream(), "");
} catch (Exception e) {
return null;
}
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
.getIntrinsicHeight());
return drawable;
}
};
}
[2] AudioManager整合系统音量(转)
来源: 互联网 发布时间: 2014-02-18
AudioManager调整系统音量(转)
前面讲过AudioManager可以修改系统的情景模式,其实看它名字,就知道Android系统的音量也是由它管理的.下面介绍几个AudioManager的几个音量调整方面的方法.
首先是得到AudioManager实例:
调整音量方法有两种,一种是渐进式,即像手动按音量键一样,一步一步增加或减少,另一种是直接设置音量值.
首先是步进的方法:
解释一下三个参数
第一个streamType是需要调整音量的类型,这里设的是媒体音量,可以是:
STREAM_ALARM 警报
STREAM_MUSIC 音乐回放即媒体音量
STREAM_NOTIFICATION 窗口顶部状态栏Notification,
STREAM_RING 铃声
STREAM_SYSTEM 系统
STREAM_VOICE_CALL 通话
STREAM_DTMF 双音多频,不是很明白什么东西
第二个direction,是调整的方向,增加或减少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不变,这个主要用于向用户展示当前的音量
第三个flags是一些附加参数,只介绍两个常用的
FLAG_PLAY_SOUND 调整音量时播放声音
FLAG_SHOW_UI 调整时显示音量条,就是按音量键出现的那个
然后是直接设置音量值的方法:
第一个和第三个参数与上面的相同,第二个参数是一个音量的int值,getStreamMaxVolume(int streamType)得到的是该类型音量的最大值,可以根据这个值计算你需要的音量,我这里直接调到最大.
原文:http://www.pocketdigi.com/20110717/398.html
前面讲过AudioManager可以修改系统的情景模式,其实看它名字,就知道Android系统的音量也是由它管理的.下面介绍几个AudioManager的几个音量调整方面的方法.
首先是得到AudioManager实例:
AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
调整音量方法有两种,一种是渐进式,即像手动按音量键一样,一步一步增加或减少,另一种是直接设置音量值.
首先是步进的方法:
public void adjustStreamVolume (int streamType, int direction, int flags)
am.adjustStreamVolume (AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
解释一下三个参数
第一个streamType是需要调整音量的类型,这里设的是媒体音量,可以是:
STREAM_ALARM 警报
STREAM_MUSIC 音乐回放即媒体音量
STREAM_NOTIFICATION 窗口顶部状态栏Notification,
STREAM_RING 铃声
STREAM_SYSTEM 系统
STREAM_VOICE_CALL 通话
STREAM_DTMF 双音多频,不是很明白什么东西
第二个direction,是调整的方向,增加或减少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不变,这个主要用于向用户展示当前的音量
第三个flags是一些附加参数,只介绍两个常用的
FLAG_PLAY_SOUND 调整音量时播放声音
FLAG_SHOW_UI 调整时显示音量条,就是按音量键出现的那个
然后是直接设置音量值的方法:
public void setStreamVolume (int streamType, int index, int flags)
am.setStreamVolume(AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_PLAY_SOUND);
第一个和第三个参数与上面的相同,第二个参数是一个音量的int值,getStreamMaxVolume(int streamType)得到的是该类型音量的最大值,可以根据这个值计算你需要的音量,我这里直接调到最大.
原文:http://www.pocketdigi.com/20110717/398.html
[3] apk跟odex的合并教程
来源: 互联网 发布时间: 2014-02-18
apk和odex的合并教程
adb push ./dexopt-wrapper /data/local
adb shell
cd /data/local
./dexopt-wrapper test.apk test.odex
上述的步骤是将apk转化为odex格式文件。
其中用到的dexopt-wrapper 附件中有。
中间可能回遇到permission deny的问题
是因为dexopt这个文件没有权限。
可以给加上权限
chmod 777 dexopt-wrapper
第一步,分解odex文件:
java -jar baksmali-1.2.8.jar -x test.odex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
第二部,把分解得到的文件变成classes.dex:
java -Xmx512M -jar smali-1.2.8.jar out -o classes.dex
这样,我们就得到了一个有用的classes.dex文件,用WinZip或者WinRAR打开test.apk文件,把这个classes.dex放进去,最后再用signapk把最新得到的这个包含classes.dex的apk重新签署一下,就生成一个可以安装的单独APK程序了。
签名的命令行
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
jarsigner -verbose -keystore android.keystore -signedjar test_signed.apk test.apk android
如果签名失败的话,需要把apk包内mtf内的mf,sf两个文件删掉再进行操作。
附件中的几个jar都要放在工作目录下。
adb push ./dexopt-wrapper /data/local
adb shell
cd /data/local
./dexopt-wrapper test.apk test.odex
上述的步骤是将apk转化为odex格式文件。
其中用到的dexopt-wrapper 附件中有。
中间可能回遇到permission deny的问题
是因为dexopt这个文件没有权限。
可以给加上权限
chmod 777 dexopt-wrapper
第一步,分解odex文件:
java -jar baksmali-1.2.8.jar -x test.odex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
第二部,把分解得到的文件变成classes.dex:
java -Xmx512M -jar smali-1.2.8.jar out -o classes.dex
这样,我们就得到了一个有用的classes.dex文件,用WinZip或者WinRAR打开test.apk文件,把这个classes.dex放进去,最后再用signapk把最新得到的这个包含classes.dex的apk重新签署一下,就生成一个可以安装的单独APK程序了。
签名的命令行
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
jarsigner -verbose -keystore android.keystore -signedjar test_signed.apk test.apk android
如果签名失败的话,需要把apk包内mtf内的mf,sf两个文件删掉再进行操作。
附件中的几个jar都要放在工作目录下。
最新技术文章: