`
zjjzmw1
  • 浏览: 1367702 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

ios真机知识点:短信,email,加速计。课程收官之作

    博客分类:
  • iOS
阅读更多
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>

@interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate,MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate,UIAccelerometerDelegate>//前两个是图片和照相机共用的。
@property (retain, nonatomic) IBOutlet UIImageView *showView;

#pragma mark========photoLibrary=========
//图片
- (IBAction)photoLibrary:(id)sender {
    //判断相册是否可以用。
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        //创建图片选取控制器。
        UIImagePickerController *imagePicker=[[UIImagePickerController alloc]init];
        imagePicker.delegate=self;//给图片选取器设置代理。
        imagePicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;//设置源类型位相册。
        [self presentViewController:imagePicker animated:YES completion:^{
            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"您好" message:@"欢迎光临" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alert show];
            [alert release];
        }];//显示该视图控制器。
        [imagePicker release];
    }
    else{
        NSLog(@"当前相册无法使用。");
    }
   
   
   
}
//当我们选中图片的时候进入的代理//其实这里图片,照相机共用一个代理
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    UIImage *image=[info objectForKey:UIImagePickerControllerOriginalImage];
    self.showView.image=image;
//    [self dismissModalViewControllerAnimated:YES];
//    Dismiss the current modal child. Uses a vertical sheet transition if animated. This method has been replaced by dismissViewControllerAnimated:completion:
//        // It will be DEPRECATED, plan accordingly.
    [picker dismissViewControllerAnimated:YES completion:^{
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"您好" message:@"欢迎下次再来" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
        [alert release];
    }];
   
}

#pragma mark========camera=========
//照相机.
- (IBAction)camera:(id)sender {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        //创建图片选取控制器。
        UIImagePickerController *cameraPicker=[[UIImagePickerController alloc]init];
        cameraPicker.delegate=self;//给图片选取器设置代理。
        cameraPicker.sourceType=UIImagePickerControllerSourceTypeCamera;//设置源类型位相册。
        [self presentViewController:cameraPicker animated:YES completion:^{
            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"您好" message:@"欢迎光临" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alert show];
            [alert release];
        }];//显示该视图控制器。
        [cameraPicker release];
    }
    else{
        NSLog(@"当前相册无法使用。");
    }
   
   
}
#pragma mark========accelerometer=========
//加速计、
- (IBAction)accelerometer:(id)sender {//不用导入新的框架,内置了一个功能简单的。
    //创建加速计对象。
    UIAccelerometer *acceler=[UIAccelerometer sharedAccelerometer];
    //设置传感器的更新数据的时间。
    [acceler setUpdateInterval:0.1];//不太精准、
    //设置代理。
    acceler.delegate=self;
   
   
   
}
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
    NSLog(@"acceleration.x===%f,,,acceleration.y===%f,,,acceleration.z===%f,,",acceleration.x,acceleration.y,acceleration.z );
   
}
#pragma mark========outSMS=========
//外部短信:就是接短信时候推出程序。
- (IBAction)outSMS:(id)sender {
    NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"sms:13269991562"]];//这里是指定的电话号码,用的时候可以用%@和传来的形参代替。
    if ([[UIApplication sharedApplication]canOpenURL:url]) {
        [[UIApplication sharedApplication]openURL:url];
    }
    else{
        NSLog(@"设备不支持短信。");
    }
   
   
}
#pragma mark========inSMS=========
- (IBAction)inSMS:(id)sender {
    if ([MFMessageComposeViewController canSendText]) {//是否可以发短信。
        //创建短信发送控制器。
        MFMessageComposeViewController *compose=[[MFMessageComposeViewController alloc]init];
        compose.messageComposeDelegate=self;//消息写代理。
        //设置消息内容。
        compose.body=@"设置消息内容";
        //设置电话。
        compose.recipients=[NSArray arrayWithObjects:@"13269991562", nil];
        //打开发送界面。
        [self presentModalViewController:compose animated:YES];
        [compose release];
    }
    else{
        NSLog(@"不支持外部短信功能");
    }
   
}
//短信发送结束的代理
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
    if (result==MessageComposeResultSent) {
        NSLog(@"消息发送成功。");
    }
    else if(result==MessageComposeResultFailed){
        NSLog(@"消息发送失败");
    }
    [self dismissModalViewControllerAnimated:YES];
}

#pragma mark========outEmail=========
- (IBAction)outEmail:(id)sender {
    NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@?cc=%@&subject=%@&body=%@",@"fujiekai@gmail.com",@"1049055935@qq.com",@"test",@"ceshi"]];//mailto协议,cc后面是抄送。他们都是收件人
    if ([[UIApplication sharedApplication]canOpenURL:url]) {
        [[UIApplication sharedApplication]openURL:url];
    }
    else{
        NSLog(@"设备不支持短信。");
    }

   
}
#pragma mark========inEmail=========
- (IBAction)inEmail:(id)sender {
    if ([MFMailComposeViewController canSendMail]) {//是否可以发邮件。
        //创建邮件发送控制器。
        MFMailComposeViewController *compose=[[MFMailComposeViewController alloc]init];
        compose.mailComposeDelegate=self;//消息写代理。
        //设置邮件标题。
        [compose setSubject:@"test"];
        //设置邮件内容。
        [compose setMessageBody:@"hello" isHTML:YES];
        //设置邮件发送的对象。
        [compose setToRecipients:[NSArray arrayWithObjects:@"1049055935@qq.com", nil]];
        //设置邮件抄送对象。
        [compose setCcRecipients:[NSArray arrayWithObjects:@"2698580804@qq.com", nil]];
        //显示邮件视图控制器。
        [self presentModalViewController:compose animated:YES];
        [compose release];
    }
    else{
        NSLog(@"不支持外部短信功能");
    } 
}
//邮件结束时的代理。
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
    if (result==MFMailComposeResultSent) {
        NSLog(@"成功了");
    }
    else if(result==MFMailComposeResultFailed){
        NSLog(@"失败了");
    }
    //收起视图控制器。
    [controller dismissModalViewControllerAnimated:YES];
}





#if 0
http://www.cocoachina.com/iphonedev/sdk/2010/0811/1996.html
Core Motion的大体介绍就是这些。下面说说Core Motion具体负责的采集,计算和处理。Core Motion的使用就是一三部曲:初始化,获取数据,处理后事。

在初始化阶段,不管你要获取的是什么数据,首先需要做的就是

motionManager = [[CMMotionManager alloc] init];

所有的操作都会由这个manager接管。后面的初始化操作相当直观,以加速度的pull方式为例

if (!motionManager.accelerometerAvailable) {
    // fail code // 检查传感器到底在设备上是否可用
}
motionManager.accelerometerUpdateInterval = 0.01; // 告诉manager,更新频率是100Hz
[motionManager startAccelerometerUpdates]; // 开始更新,后台线程开始运行。这是pull方式。

如果是push方式,更新的代码可以写成这样

[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *latestAcc, NSError *error)
{
    // Your code here
}];

接下来就是获取数据了。Again,很简单的代码

CMAccelerometerData *newestAccel = motionManager.accelerometerData;
filteredAcceleration[0] = newestAccel.acceleration.x;
filteredAcceleration[1] = newestAccel.acceleration.y;
filteredAcceleration[2] = newestAccel.acceleration.z;

通过定义的CMAccelerometerData变量,获取CMAcceleration信息。和以前的UIAccelerometer类的使用方式一样,CMAcceleration在Core Motion中是以结构体形式定义的

typedef struct {
    double x;
    double y;
    double z;
}

对应的motion信息,比如加速度或者旋转速度,就可以直接从这三个成员变量中得到。

最后是处理后事,就是在你不需要Core Motion进行处理的时候,释放资源

[motionManager stopAccelerometerUpdates];
//[motionManager stopGyroUpdates];
//[motionManager stopDeviceMotionUpdates];
[motionManager release];

你看,就是这么简单。当然,如果这么Core Motion这么简单,就太无趣了。实际上,Core Motion最好玩的地方,既不是加速度,也不是角速度,而是经过sensor fusing算法处理的Device Motion信息的提供。Core Motion里面提供了一个叫做CMDeviceMotion的类,用来把下图所示的这些数据封装成Device Motion信息:


#endif
分享到:
评论

相关推荐

    iOS 16.0真机包噢

    iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16...

    iOS 真机调试包,有需要的自行下载,12.0 - 16.4

    下面将详细讲解真机调试的重要性、流程以及相关的知识点。 1. **真机调试的重要性**: - **真实环境模拟**:模拟器虽然能提供大部分功能测试,但无法完全模拟真实设备的性能和用户交互,真机调试可以更准确地反映...

    iOS真机调试包(Xcode)

    以下将详细介绍这个调试包的使用方法以及与iOS真机调试相关的知识点。 首先,下载并解压这个“iOS 16 (包括16.0~16.3 )”压缩包后,你需要将其内容正确地引入到你的Xcode环境中。通常,这可能包含一些更新或插件,...

    iOS 真机调试包 iOS 15.1、15.0、14.8、14.7

    在iOS应用开发过程中,真机调试是不可或缺的一个环节。它允许开发者在实际设备上测试应用程序,确保其在不同iOS版本和设备上的兼容性...总的来说,熟悉并熟练运用iOS真机调试包是每个iOS开发者必须掌握的关键技能之一。

    iOS 11.1真机调试包

    iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包iOS 11.1真机调试包

    2023【iOS 真机调试支持包】 iOS 16.6 16.5正式版,Xcode 14.3.1 支持

    在iOS应用开发中,真机调试是不可或缺的一部分,它允许开发者在实际设备上测试应用程序,以便更好地模拟用户的真实使用情况。本压缩包“2023【iOS 真机调试支持包】 iOS 16.6 16.5正式版,Xcode 14.3.1 支持”提供了...

    iOS 13.5 真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和真实使用环境下运行无误。iOS 13.5是苹果公司发布的一个重要版本,引入了许多新功能和性能优化...

    iOS12 真机调试包

    在iOS应用开发过程中,真机调试是不可或缺的一环。它允许开发者在真实的设备上测试应用程序,确保其在各种硬件配置和系统版本上的表现。这里提到的"iOS12真机调试包"是针对iOS 12操作系统的一个关键组件,主要用于...

    IOS16.3真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和系统版本上的表现。本文将深入探讨“iOS 16.3真机调试包”,以及如何利用Xcode进行有效的真机...

    ios 真机调试包_14.6

    本文将深入探讨“ios 真机调试包_14.6”相关的知识,包括iOS 14.6系统的特性、真机调试的重要性以及如何进行真机调试。 iOS 14.6是Apple公司推出的一个操作系统更新,它对iOS 14系列进行了进一步的优化和增强。这个...

    ios12真机包

    在iOS开发过程中,真机包(也称为设备配置文件或Device Provisioning Profile)扮演着至关重要的角色,尤其是在升级到新版本系统如iOS 12之后。这个“ios12真机包”是针对iOS 12系统进行真机调试的重要组件,确保...

    iOS真机调试包12.4.zip

    解决ios最新版本12.4的真机调试问题 使用方法: 打开Finder 按下: Command⌘+Shift⇧+G 输入: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

    iOS 15.4真机包呀

    iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS ...

    iOS11.2 真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际的设备上测试应用程序,确保软件在各种硬件配置和系统版本上的表现。这里我们关注的是“iOS11.2 真机调试包”,这是一份专为在iOS 11.2系统上...

    最新IOS17.0真机调试包

    本文将深入探讨“最新iOS 17.0真机调试包”以及与之相关的Xcode、iOS和Mac开发环境的知识点。 首先,"最新iOS 17.0真机调试包"是指针对苹果操作系统iOS的最新版本17.0,为开发者提供的用于真机调试的工具。在iOS...

    ios真机调试11.2

    在iOS应用开发过程中,真机调试是一项至关重要的环节,它能帮助开发者在真实设备上测试应用程序,确保软件在各种环境下的稳定性和性能。本篇将详细介绍如何进行iOS 11.2 (15C107)版本的真机调试,以及如何利用Xcode ...

    ios真机调试证书

    在iOS应用开发过程中,真机调试是不可或缺的环节,它允许开发者在实际设备上测试应用程序,确保其在不同型号和系统版本的iPhone或iPad上的功能和性能。"ios真机调试证书"是这个过程中的关键组件,它为开发者提供了一...

    ios11真机支持文件

    "ios11真机支持文件"是指开发者为了在Xcode中测试和调试应用,特别是在iOS 11版本上运行时所需的一组关键文件。这些文件通常包含了特定iOS版本的模拟器镜像、设备配置数据以及必要的库和框架,使得开发者能够在Xcode...

    iOS16.5-真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和系统版本上的表现。本文将深入探讨“iOS16.5-真机调试包”这一主题,以及如何利用它进行有效的...

Global site tag (gtag.js) - Google Analytics