android照相及照片上传实现代码

 更新时间:2016年9月20日 20:01  点击:1704
本文章来介绍了关于手机开发之android来实现android照相及照片功能,有需要学习的同学可以参考一下下哈。
 代码如下 复制代码
package com.android.cist.camera.view; 
import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import java.util.HashMap; 
import java.util.Map; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ContentResolver; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.Toast; 
import com.android.cist.R; 
import com.android.cist.network.HttpUtil; 
import com.android.cist.network.form.FormFile; 
import com.android.cist.network.form.HttpFormUtil; 
import com.android.cist.util.ApplicationUtil; 
import com.android.cist.util.ImageUtil; 
public class CameraActivity extends Activity implements OnClickListener{ 
    private ImageView preview; 
    private EditText carNo; 
    private EditText addres; 
    private EditText type; 
    private Button back; 
    private Button submit; 
    private Button capture; 
    private Button reCapture; 
    private OnClickListener imgViewListener; 
    private Bitmap myBitmap; 
    private byte[] mContent; 
    private Handler handler; 
    String returnString; 
    private CalendarView happenDate; 
    private static final int REQUEST_CAMERA = 1; 
    private static final int REQUEST_CALENDAR = 2; 
    @ Override 
    public void onCreate ( Bundle savedInstanceState ) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.camera); 
        setUpViews(); 
        setUpListeners(); 
        ApplicationUtil.getInstance().addActivity(this); 
    } 
    @ Override 
    protected void onActivityResult ( int requestCode , int resultCode , Intent data ) 
    { 
        super.onActivityResult(requestCode, resultCode, data); 
        ContentResolver resolver = getContentResolver(); 
        /**
         * 因为两种方式都用到了startActivityForResult方法,
         * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
         * 这里的requestCode跟startActivityForResult里面第二个参数对应
         */ 
        if (requestCode == 0) 
        { 
            try 
            { 
                // 获得图片的uri 
                Uri originalUri = data.getData(); 
                // 将图片内容解析成字节数组 
                mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString()))); 
                // 将字节数组转换为ImageView可调用的Bitmap对象 
                myBitmap = getPicFromBytes(mContent, null); 
                // //把得到的图片绑定在控件上显示 
                preview.setImageBitmap(myBitmap); 
            } catch ( Exception e ) 
            { 
                System.out.println(e.getMessage()); 
            } 
        } else if (requestCode == REQUEST_CAMERA){ 
            try 
            { 
                super.onActivityResult(requestCode, resultCode, data); 
                Bundle extras = data.getExtras(); 
                myBitmap = (Bitmap) extras.get("data"); 
                ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
                myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
                mContent = baos.toByteArray(); 
            } catch ( Exception e ) 
            { 
                e.printStackTrace(); 
            } 
            // 把得到的图片绑定在控件上显示 
            preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap, 10));//把拍摄的照片转成圆角显示在预览控件上 
        }else if(requestCode==REQUEST_CALENDAR){ 
            if(resultCode == RESULT_OK){ 
                happenDate.setCalendar(data.getIntExtra("year", 1900), data.getIntExtra("month", 0), data.getIntExtra("day", 1)); 
            } 
        } 
    } 
    public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts ) 
    { 
        if (bytes != null) 
            if (opts != null) 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts); 
            else 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
        return null; 
    } 
    public static byte[] readStream ( InputStream inStream ) throws Exception 
    { 
        byte[] buffer = new byte[1024]; 
        int len = -1; 
        ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
        while ((len = inStream.read(buffer)) != -1) 
        { 
            outStream.write(buffer, 0, len); 
        } 
        byte[] data = outStream.toByteArray(); 
        outStream.close(); 
        inStream.close(); 
        return data; 
    } 
    @Override 
    public void onClick(View v) { 
        int id = v.getId(); 
        switch(id){ 
            case R.id.capture:{ 
                final CharSequence[] items = 
                { "相册", "拍照" }; 
                AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items, 
                        new DialogInterface.OnClickListener() 
                        { 
                            public void onClick ( DialogInterface dialog , int item ) 
                            { 
                                // 这里item是根据选择的方式, 
                                // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法 
                                if (item == 1){ 
                                    Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); 
                                    startActivityForResult(getImageByCamera, REQUEST_CAMERA); 
                                } else{ 
                                    Intent getImage = new Intent(Intent.ACTION_GET_CONTENT); 
                                    getImage.addCategory(Intent.CATEGORY_OPENABLE); 
                                    getImage.setType("image/jpeg"); 
                                    startActivityForResult(getImage, 0); 
                                } 
                            } 
                        }).create(); 
                dlg.show(); 
            } 
            break; 
            /*case R.id.reCapture:{
                final CharSequence[] items =
                { "相册", "拍照" };
                AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
                        new DialogInterface.OnClickListener()
                        {
                            public void onClick ( DialogInterface dialog , int item )
                            {
                                // 这里item是根据选择的方式,
                                // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
                                if (item == 1)
                                {
                                    Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
                                    startActivityForResult(getImageByCamera, 1);
                                } else
                                {
                                    Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
                                    getImage.addCategory(Intent.CATEGORY_OPENABLE);
                                    getImage.setType("image/jpeg");
                                    startActivityForResult(getImage, 0);
                                }
                            }
                        }).create();
                dlg.show();
            }
            break;*/ 
            case R.id.submit:{ 
                new PostThread().start();//开启线程提交数据 
            } 
            break; 
            case R.id.back:{ 
                CameraActivity.this.finish();//返回,销毁当前Activity 
            } 
            break; 
            default: 
            break; 
        } 
    } 

今天我们来讲述一下简单的方法就是android开发之应用程序全屏实现方法,有需要的同学可以参考一下本文章。

一般Android的应用启动时都有欢迎界面,类似QQHD启动那样。比较大方绚丽。心动不如行动,有时间自己也来实现类似的效果,嘿嘿。QQ2011

观察发现QQHD的欢迎界面是全屏的,这个好办。下面就Android应用调用全屏方式说明一下。

一般使Android程序的画面充满整个屏幕,有两种方法。

 代码如下 复制代码
@Override
     protected void onCreate(Bundle savedInstanceState)
     {
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
         super.onCreate(savedInstanceState);
         setContentView(R.layout.welcome);
     }

.配置AndroidManifest.xml

 代码如下 复制代码
<application
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name" >
         <activity
             android:name=".Welcome"
             android:label="@string/app_name"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
         >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
         <activity
             android:name=".AboutApp"
             android:label="@string/aboutapp_title"
             android:theme="@android:style/Theme.Dialog"
         />
     </application>

安卓示例

本文章详细的介绍了关于android安装与卸载apk文件模拟程序,有要学习开发android软件包的朋友可以参考一下本文章先在电脑测试啊。

我们在安装apk时一共分为四步
  
  一:首先需要启动模拟器
  二:start->运行->CMD
  三:进入andoridsdk下面的tools目录
  四:adbinstallc:*.apk(说明:“c:*.apk”是要安装的文件的路径)其实最重要的就是这步了。大家可要记住了,因为这个你要是错了的话,那前面的做的一切工作就都白费了。
  
  效果图:

我们在来看看怎么卸载apk的步骤:
  
  一:首先需要启动模拟器
  二:start->运行->CMD
  三:进入andoridsdk下面的tools目录//大家其实看到了安装与卸载前三步都是一样的,所以大家主要记住的就是后面的几个步骤,希望大家加油。
  四:adbshell两个单词中间都有空格
  五:cddata
  六:cdapp
  七:ls(说明,主要是针对不知道包下面的文件,可以列表显示出来)
  八:rm*.apk(说明:”*.apk”是你要卸载的apk包)还是这步最重要的,因为这步上实现的就是你要卸载那个apk这个很重要,如果你没有记住apk的名字,那你卸载做了,那你还得从新安装,这对你的工作就带来的很大的麻烦。大家一点要记住。
  
  效果图:

这样就可以卸载这个apk包了!大家看完了是不是感觉很简单呀,那么我们就自己动手实现一下吧,这个样才能对android模拟器(安装和卸载)apk.

本文章来介绍在手机中如何设置margin哦,我们做网站只要在css定义就好了,在手机中可不一样哦,下面参考在java中的设置方法。

Android在java代码中设置margin 我们平常可以直接在xml里设置margin,如:

 代码如下 复制代码
<ImageView android:layout_margin="5dip" android:src="@drawable/image" />

但是有些情况下,需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢?

 

通过查阅android api,我们发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).

其直接的子类有:

 代码如下 复制代码
FrameLayout.LayoutParams, LinearLayout.LayoutParams and RelativeLayout.LayoutParams.

 

使用方法:

 

 代码如下 复制代码
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 20, 30, 40);
imageView.setLayoutParams(lp);
本文章介绍了关于现在浏行的安卓手机软件中如何加入广告哦,下面我们来看看关于android软件中加入广告实现方法吧。
经过了一番折腾,忙忙碌碌了一下午,终于搞明白了Android软件界面嵌入广告的方法,以下我以嵌入有米广告为例小结一下:
步骤一,下载有米广告SDK,将 youmi-android.jar 导入想要嵌入广告的的工程中。
1. 右键您的工程根目录,选择“Properties”
2. 在左面板中选择“Java Build Path”
3. 然后选择“Libraries”标签
4. 点击“Add External JARs„”
5. 选择 youmi-android.jar 的目录路径.
6. 点击“OK”即导入成功
步骤二,在AndroidManifest.xml文件中配置用户权限。
请务必配置以下权限,否则将有可能获取不到广告。
1. android.permission.INTERNET,连接网络权限 INTERNET ,用于请求广告
2. android.permission.READ_PHONE_STATE,用于精确统计用户手机的系统信息
3. android.ACCESS_NETWORK_STATE,用于精确识别网络接入点等信息
4. android.permission.ACCESS_COARSE_LOCATION,有助于精准投放地域广告以及帮助统计使用应用程序的用户的地区分布情况
5. android.permission.WRITE_EXTERNAL_STORAGE,有助于实现图片资源的缓存,节省流量,并可获得更好的用户体验
请将下面权限配置代码复制到 AndroidManifest.xml 文件中 :
<!-- 必须申明的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 以下为可选的权限 -->
<!-- 使用GPS获取用户精确定位信息 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 使用WIFI获取用户精确定位信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
步骤三,在AndroidManifest.xml中添加AdActivity。
AdActivity是广告展示的载体,请在AndroidManifest.xml中添加AdActivity:
<activity android:name="net.youmi.android.AdActivity"
       android:configChanges="keyboard|keyboardHidden|orientation"/>
<meta-data android:name="YOUMI_CHANNEL" android:value="0" />
步骤四,初始化账号信息。
在主Activity的onCreate中调用AdManager.init() 初始化 App ID 、App Secret、请求广告间隔和测试模式等参数(请务必在任意AdView初始化前调用一次)。
//第一个参数为您的应用发布Id
//第二个参数为您的应用密码
//第三个参数是请求广告的间隔,有效的设置值为30至200,单位为秒
//第四个参数是设置测试模式,设置为true时,可以获取测试广告,正式发布请设置此参数为false
AdManager.init(Context context,String appid, String appsec, int intervalSecond, boolean isTestMode);
        !注意:3.04版本开始AdManager.init方法的参数改为五个,加上了Context参数!调试阶段将测试模式设置为true,请将测试模式设置为false后上传至网站等待审核。 !未上传应用安装包、未通过审核的应用、模拟器运行,都只能获得测试广告,审核通过后,模拟器上依旧是测试广告,真机才会获取到正常的广告。
代码如下:
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     // 应用Id 应用密码 广告请求间隔(s) 测试模式
AdManager.init(this,"537ef88653a2993c", "b9e10bcfe994a9fb", 30, true);
setContentView(R.layout.main);
}
步骤五,使用xml布局嵌入广告
1.在 res/values 文件夹中添加 attrs.xml。如果你没有添加这个文件,那你将不能在 layout 中设置 AdView 的属性。attrs.xml 文件的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="net.youmi.android.AdView">
<!--广告背景颜色[只对文字广告有效](取值范围为#000000----#ffffff) -->
<attr name="backgroundColor" format="color" />
<!--广告文本颜色[只对文字广告有效](取值范围为#000000----#ffffff) -->
<attr name="textColor" format="color" />
<!--广告背景透明度[只对文字广告有效],默认为 255,设置范围0-255 -->
<attr name="backgroundTransparent" format="integer"/>
</declare-styleable>
</resources>  
2.在布局main.xml中嵌入有米广告视图:
以下为一个实例:
<?xml version="1.0" encoding="utf-8"?>
<!-- 需要设置命名空间 :umadsdk -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:umadsdk="http://schemas.android.com/apk/res/com.youmi"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<net.youmi.android.AdView
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
umadsdk:textColor="#ffffff"
umadsdk:backgroundColor="#4076AA"
umadsdk:backgroundTransparent="155"/>
</LinearLayout>
注意: xmlns:umadsdk=”http://schemas.android.com/apk/res/您的应用包名” 这句一定要加上,不然编辑器会提示错误。
3.XML布局代码部分
import net.youmi.android.AdManager;
import android.app.Activity;
import android.os.Bundle;

public class TestAdActivity extends Activity{
    /** Called when the activity is first created. */
// 应用Id 应用密码 广告请求间隔(s) 测试模式
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     // 应用Id 应用密码 广告请求间隔(s) 测试模式
AdManager.init(this,"537ef88653a2993c", "b9e10bcfe994a9fb", 30, true);
setContentView(R.layout.main);
}

}
最后运行结果如下图所示:
[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20