当前位置: 编程技术>移动开发
本页文章导读:
▪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都要放在工作目录下。
最新技术文章: