最近写了个闹钟的程序,看到SharedPreferences在一个程序中可以共享数据,SharedPreferences是一个轻量级的键值存储机制,只可以存储基本数据类型。我就拿来用用,没想到SharedPreferences太好了,真是轻量级的保存数据的好的工具,比sqlite好用多了!以后我又多了一种编程思想了,呵呵,所以现在分享给大家,特别注意这点:这个无法直接在多个程序间共享Preferences数据。程序关闭再打开时间仍然保留你上次设置的时间。这就是Preferences的作用!                

程序欢迎界面:

点击设置闹钟界面:

      

点击闹钟设置中的设置后的界面:                       

              

闹钟时间到了弹出dialog:

 设置重复想起闹钟后的界面:                            

   

点击返回键弹出的提示:

下面请看代码:

一、MainActivity中的代码:

package com.cn.daming;
 
import java.util.Calendar;
 
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 TextView setTime1;
 TextView setTime2;
 TextView setTime3;
 Button mButton1;
 Button mButton2;
 Button mButton3;
 Button mButton4;
 Button mButton5;
 Button mButton6;
 
 String time1String = null;
 String time2String = null;
 String time3String = null;
 String defalutString = "目前无设置";
 
 AlertDialog builder = null;
 Calendar c=Calendar.getInstance();
 
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
   
  //取得活动的Preferences对象
  SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
  time1String = settings.getString("TIME1", defalutString);
  time2String = settings.getString("TIME2", defalutString);
  time3String = settings.getString("TIME3", defalutString);
  
  InitButton1();
  InitButton2();
  InitButton3();
  InitButton4();
  InitButton5();
  InitButton6(); 
  
  setTime1.setText(time1String);
  setTime3.setText(time2String);
  setTime2.setText(time3String);
 }
 
 public void InitButton1()
 {
  setTime1=(TextView) findViewById(R.id.setTime1);
  mButton1=(Button)findViewById(R.id.mButton1);
  mButton1.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   c.setTimeInMillis(System.currentTimeMillis());
   int mHour=c.get(Calendar.HOUR_OF_DAY);
   int mMinute=c.get(Calendar.MINUTE);
   
   
   new TimePickerDialog(MainActivity.this,
    new TimePickerDialog.OnTimeSetListener()
    {    
    public void onTimeSet(TimePicker view,int hourOfDay,
          int minute)
    {
     c.setTimeInMillis(System.currentTimeMillis());
     c.set(Calendar.HOUR_OF_DAY,hourOfDay);
     c.set(Calendar.MINUTE,minute);
     c.set(Calendar.SECOND,0);
     c.set(Calendar.MILLISECOND,0);
     
     Intent intent = new Intent(MainActivity.this, CallAlarm.class);
     PendingIntent sender=PendingIntent.getBroadcast(
     MainActivity.this,0, intent, 0);
     AlarmManager am;
     am = (AlarmManager)getSystemService(ALARM_SERVICE);
     am.set(AlarmManager.RTC_WAKEUP,
      c.getTimeInMillis(),
      sender
      );
     String tmpS=format(hourOfDay) ":" format(minute);
     setTime1.setText(tmpS);
     
     //SharedPreferences保存数据,并提交
     SharedPreferences time1Share = getPreferences(0);
     SharedPreferences.Editor editor = time1Share.edit();
     editor.putString("TIME1", tmpS);
     editor.commit();
     
     Toast.makeText(MainActivity.this,"设置大明闹钟时间为" tmpS,
     Toast.LENGTH_SHORT)
     .show();
    }   
    },mHour,mMinute,true).show();
   }
  });
 }
 
 public void InitButton2()
 {
  mButton2=(Button) findViewById(R.id.mButton2);
  mButton2.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   Intent intent = new Intent(MainActivity.this, CallAlarm.class);
   PendingIntent sender=PendingIntent.getBroadcast(
    MainActivity.this,0, intent, 0);
   AlarmManager am;
   am =(AlarmManager)getSystemService(ALARM_SERVICE);
   am.cancel(sender);
   Toast.makeText(MainActivity.this,"大明闹钟时间删除",
       Toast.LENGTH_SHORT).show();
   setTime1.setText("目前无设置");
   
   SharedPreferences time1Share = getPreferences(0);
    SharedPreferences.Editor editor = time1Share.edit();
    editor.putString("TIME1", "目前无设置");
    editor.commit();
   }
  });
 }
 
 public void InitButton3()
 {
  setTime3=(TextView) findViewById(R.id.setTime5);
  mButton3=(Button)findViewById(R.id.mButton5);
  mButton3.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   c.setTimeInMillis(System.currentTimeMillis());
   int mHour=c.get(Calendar.HOUR_OF_DAY);
   int mMinute=c.get(Calendar.MINUTE);
   
   
   new TimePickerDialog(MainActivity.this,
    new TimePickerDialog.OnTimeSetListener()
    {    
    public void onTimeSet(TimePicker view,int hourOfDay,
          int minute)
    {
     c.setTimeInMillis(System.currentTimeMillis());
     c.set(Calendar.HOUR_OF_DAY,hourOfDay);
     c.set(Calendar.MINUTE,minute);
     c.set(Calendar.SECOND,0);
     c.set(Calendar.MILLISECOND,0);
     
     Intent intent = new Intent(MainActivity.this, CallAlarm.class);
     PendingIntent sender=PendingIntent.getBroadcast(
     MainActivity.this,1, intent, 0);
     AlarmManager am;
     am = (AlarmManager)getSystemService(ALARM_SERVICE);
     am.set(AlarmManager.RTC_WAKEUP,
      c.getTimeInMillis(),
      sender
      );
     String tmpS=format(hourOfDay) ":" format(minute);
     setTime3.setText(tmpS);
     
     //SharedPreferences保存数据,并提交
     SharedPreferences time2Share = getPreferences(1);
     SharedPreferences.Editor editor = time2Share.edit();
     editor.putString("TIME2", tmpS);
     editor.commit();
     
     Toast.makeText(MainActivity.this,"设置大明闹钟时间为" tmpS,
     Toast.LENGTH_SHORT)
     .show();
    }   
    },mHour,mMinute,true).show();
   }
  });
 }
 
 public void InitButton4()
 {
  mButton4=(Button) findViewById(R.id.mButton6);
  mButton4.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   Intent intent = new Intent(MainActivity.this, CallAlarm.class);
   PendingIntent sender=PendingIntent.getBroadcast(
    MainActivity.this,0, intent, 0);
   AlarmManager am;
   am =(AlarmManager)getSystemService(ALARM_SERVICE);
   am.cancel(sender);
   Toast.makeText(MainActivity.this,"大明闹钟时间删除",
       Toast.LENGTH_SHORT).show();
   setTime3.setText("目前无设置");
   
   //SharedPreferences保存数据,并提交
    SharedPreferences time2Share = getPreferences(1);
    SharedPreferences.Editor editor = time2Share.edit();
    editor.putString("TIME2", "目前无设置");
    editor.commit();
   }
  });
 }
 
 public void InitButton5()
 {
  setTime2=(TextView) findViewById(R.id.setTime2);
  LayoutInflater factory = LayoutInflater.from(this);
  final View setView = factory.inflate(R.layout.timeset,null);
  final TimePicker tPicker=(TimePicker)setView
         .findViewById(R.id.tPicker);
  tPicker.setIs24HourView(true);
 
  final AlertDialog di=new AlertDialog.Builder(MainActivity.this)
    .setIcon(R.drawable.clock)
    .setTitle("设置")
    .setView(setView)
    .setPositiveButton("确定",
    new DialogInterface.OnClickListener()
    {
    public void onClick(DialogInterface dialog, int which)
    {
     EditText ed=(EditText)setView.findViewById(R.id.mEdit);
     int times=Integer.parseInt(ed.getText().toString())
        *1000;
     c.setTimeInMillis(System.currentTimeMillis());
     c.set(Calendar.HOUR_OF_DAY,tPicker.getCurrentHour());
     c.set(Calendar.MINUTE,tPicker.getCurrentMinute());
     c.set(Calendar.SECOND,0);
     c.set(Calendar.MILLISECOND,0);
 
     Intent intent = new Intent(MainActivity.this,
            CallAlarm.class);
     PendingIntent sender = PendingIntent.getBroadcast(
     MainActivity.this,1, intent, 0);
     AlarmManager am;
     am = (AlarmManager)getSystemService(ALARM_SERVICE);
     am.setRepeating(AlarmManager.RTC_WAKEUP,
       c.getTimeInMillis(),times,sender);
     String tmpS=format(tPicker.getCurrentHour()) ":" 
        format(tPicker.getCurrentMinute());
     String subStr = "设置大明闹钟时间为" tmpS 
       "开始,重复间隔为" times/1000 "秒";
     setTime2.setText("设置大明闹钟时间为" tmpS 
         "开始,重复间隔为" times/1000 "秒");
     
     //SharedPreferences保存数据,并提交 
     SharedPreferences time3Share = getPreferences(2);
    SharedPreferences.Editor editor = time3Share.edit();
    editor.putString("TIME3", subStr);
    editor.commit();
     
     Toast.makeText(MainActivity.this,"设置大明闹钟为" tmpS 
         "开始,重复间隔为" times/1000 "秒",
         Toast.LENGTH_SHORT).show();
    }
    })
    .setNegativeButton("取消",
    new DialogInterface.OnClickListener()
    {
    public void onClick(DialogInterface dialog, int which)
    {
    }
    }).create();
 
  mButton5=(Button) findViewById(R.id.mButton3);
  mButton5.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   c.setTimeInMillis(System.currentTimeMillis());
   tPicker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
   tPicker.setCurrentMinute(c.get(Calendar.MINUTE));
   di.show();
   }
  });
 }
 
 public void InitButton6()
 {
  mButton6=(Button) findViewById(R.id.mButton4);
  mButton6.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
   Intent intent = new Intent(MainActivity.this, CallAlarm.class);
   PendingIntent sender = PendingIntent.getBroadcast(
    MainActivity.this,1, intent, 0);
   AlarmManager am;
   am = (AlarmManager)getSystemService(ALARM_SERVICE);
   am.cancel(sender);
   Toast.makeText(MainActivity.this,"闹钟时间删除",
       Toast.LENGTH_SHORT).show();
   setTime2.setText("目前无设置");
   //SharedPreferences保存数据,并提交 
    SharedPreferences time3Share = getPreferences(2);
   SharedPreferences.Editor editor = time3Share.edit();
   editor.putString("TIME3", "目前无设置");
   editor.commit();
   }
  });
 }
  
 @Override
 public boolean onKeyUp(int keyCode, KeyEvent event) {
 
   if(keyCode == KeyEvent.KEYCODE_BACK){
 builder = new AlertDialog.Builder(MainActivity.this)
  .setIcon(R.drawable.clock)
  .setTitle("温馨提示:")
  .setMessage("您是否要退出大明闹钟程序!!!")
  .setPositiveButton("确定",
  new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog,
   int whichButton) {
   MainActivity.this.finish();
  }
  })
  .setNegativeButton("取消",
  new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog,
   int whichButton) {
   builder.dismiss();
  }
  }).show();
   }
   return true;
 }
 
 private String format(int x)
 {
  String s="" x;
  if(s.length()==1) s="0" s;
  return s;
 }
}

二、CallAlarm中的代码:

package com.cn.daming;
 
import android.content.Context;
import android.content.Intent;
import android.content.BroadcastReceiver;
import android.os.Bundle;
 
public class CallAlarm extends BroadcastReceiver
{
 @Override
 public void onReceive(Context context, Intent intent)
 {
 Intent i = new Intent(context, AlarmAlert.class);
  
 Bundle bundleRet = new Bundle();
 bundleRet.putString("STR_CALLER", "");
 i.putExtras(bundleRet);
 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 context.startActivity(i);
 }
}

三、AlarmAlert中的代码:

package com.cn.daming;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
 
public class AlarmAlert extends Activity
{
 @Override
 protected void onCreate(Bundle savedInstanceState) 
 {
 super.onCreate(savedInstanceState);
 new AlertDialog.Builder(AlarmAlert.this)
  .setIcon(R.drawable.clock)
  .setTitle("大明闹钟响了!!")
  .setMessage("快完成你制定的计划吧!!!")
  .setPositiveButton("关掉它",
   new DialogInterface.OnClickListener()
  {
   public void onClick(DialogInterface dialog, int whichButton)
   {
   AlarmAlert.this.finish();
   }
  })
  .show();
 } 
}

四、main.xml布局文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@ id/layout1"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/other"
>
 <DigitalClock
 android:id="@ id/dClock"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="40sp"
 android:textColor="@drawable/blue"
 android:layout_x="70px"
 android:layout_y="32px"
 >
 </DigitalClock>
 <TextView
  android:id="@ id/text1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/str_title3"
  android:textSize="20sp"
  android:textColor="@drawable/black"
  android:layout_x="10px"
  android:layout_y="104px"
 >
 </TextView>
 <Button
  android:id="@ id/mButton1"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button1"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="102px"
 >
  </Button>
  
  <TextView
  android:id="@ id/setTime1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/str_default"
  android:textColor="@drawable/red"
  android:textSize="16sp"
  android:layout_x="10px"
  android:layout_y="149px"
 >
 </TextView>
 <Button
  android:id="@ id/mButton2"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button2"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="142px"
 >
 </Button>
 
 <TextView
  android:id="@ id/text5"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/str_title4"
  android:textSize="20sp"
  android:textColor="@drawable/black"
  android:layout_x="10px"
  android:layout_y="216px"
 >
 </TextView>
 <Button
  android:id="@ id/mButton5"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button1"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="212px"
 >
  </Button>
  
  <TextView
  android:id="@ id/setTime5"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/str_default"
  android:textColor="@drawable/red"
  android:textSize="16sp"
  android:layout_x="10px"
  android:layout_y="259px"
 >
 </TextView>
 <Button
  android:id="@ id/mButton6"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button2"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="252px"
 >
 </Button>
 
 <TextView
  android:id="@ id/text2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/str_title2"
  android:textSize="20sp"
  android:textColor="@drawable/black"
  android:layout_x="10px"
  android:layout_y="326px"
 >
 </TextView>
 <Button
  android:id="@ id/mButton3"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button1"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="322px"
 >
 </Button>
 
 <TextView
  android:id="@ id/setTime2"
  android:layout_width="170px"
  android:layout_height="wrap_content"
  android:text="@string/str_default"
  android:textColor="@drawable/red"
  android:textSize="16sp"
  android:layout_x="10px"
  android:layout_y="369px"
 >
  </TextView>
 <Button
  android:id="@ id/mButton4"
  android:layout_width="wrap_content"
  android:layout_height="40px"
  android:text="@string/str_button2"
  android:textColor="@drawable/black"
  android:textSize="18sp"
  android:layout_x="190px"
  android:layout_y="362px"
 >
 </Button>
 
</AbsoluteLayout>

五、timeset.xml布局文件中的代码:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
 android:id="@ id/layout2"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 xmlns:android="http://schemas.android.com/apk/res/android"
>
 <TextView
 android:id="@ id/text1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="@string/str_text1"
 android:textColor="@drawable/white"
 android:textSize="16sp"
 android:layout_x="10px"
 android:layout_y="32px"
 >
 </TextView>
 <TextView
 android:id="@ id/text2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="@string/str_text2"
 android:textColor="@drawable/white"
 android:textSize="16sp"
 android:layout_x="10px"
 android:layout_y="172px"
 >
 </TextView>
 <TimePicker
 android:id="@ id/tPicker"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_x="100px"
 android:layout_y="12px"
 >
 </TimePicker>
 <EditText
 android:id="@ id/mEdit"
 android:layout_width="52px"
 android:layout_height="40px"
 android:text="15"
 android:textSize="16sp"
 android:layout_x="120px"
 android:layout_y="162px"
 >
 </EditText>
 <TextView
 android:id="@ id/text3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="@string/str_text3"
 android:textColor="@drawable/white"
 android:textSize="16sp"
 android:layout_x="180px"
 android:layout_y="172px"
 >
 </TextView>
</AbsoluteLayout>

六、string.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="hello">Hello World, EX06_10</string>
 <string name="app_name">大明原创闹钟</string>
 <string name="str_button1">设置闹钟</string>
 <string name="str_button2">删除闹钟</string>
 <string name="str_title2">重复响起的闹钟</string>
 <string name="str_title3">大明闹钟一</string>
 <string name="str_title4">大明闹钟二</string>
 <string name="str_default">目前无设置</string>
 <string name="str_text1">开始时间</string>
 <string name="str_text2">重复响起的闹钟</string>
 <string name="str_text3">秒</string>
</resources>

七、color.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <drawable name="white">#FFFFFFFF</drawable>
 <drawable name="other">#FF00FFF0</drawable>
 <drawable name="black">#000000</drawable>
 <drawable name="blue">#0000FF</drawable>
 <drawable name="red">#FF0000</drawable>
</resources>

 八、AndroidManifest.xml中的代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.cn.daming"
  android:versionCode="1"
  android:versionName="1.0">
 <uses-sdk android:minSdkVersion="8" />
 
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <!-- 註冊receiver CallAlarm -->
  <receiver android:name=".CallAlarm" android:process=":remote" />
  <activity android:name=".MainActivity"
     android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <activity android:name=".AlarmAlert"
    android:label="@string/app_name">
  </activity>
 </application>
</manifest> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

Android实现闹钟小程序的更多相关文章

  1. html5 canvas合成海报所遇问题及解决方案总结

    这篇文章主要介绍了html5 canvas合成海报所遇问题及解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 微信小程序“圣诞帽”的实现思路详解

    这两天朋友圈被圣诞帽刷屏,下面通过本文给大家分享微信小程序“圣诞帽”的实现思路详解,需要的朋友参考下吧

  3. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  5. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  6. Ionic – Splash Screen适用于iOS,但不适用于Android

    我有一个离子应用程序,其中使用CLI命令离子资源生成的启动画面和图标iOS版本与正在渲染的启动画面完美配合,但在Android版本中,只有在加载应用程序时才会显示白屏.我检查了config.xml文件,所有路径看起来都是正确的,生成的图像出现在相应的文件夹中.(我使用了splash.psd模板来生成它们.我错过了什么?这是config.xml文件供参考,我觉得我在这里做错了–解决方法在config.xml中添加以下键:它对我有用!

  7. ios – 无法启动iPhone模拟器

    /Library/Developer/CoreSimulator/Devices/530A44CB-5978-4926-9E91-E9DBD5BFB105/data/Containers/Bundle/Application/07612A5C-659D-4C04-ACD3-D211D2830E17/ProductName.app/ProductName然后,如果您在Xcode构建设置中选择标准体系结构并再次构建和运行,则会产生以下结果:dyld:lazysymbolbindingFailed:Symbol

  8. Xamarin iOS图像在Grid内部重叠

    heyo,所以在Xamarin我有一个使用并在其中包含一对,所有这些都包含在内.这在Xamarin.Android中看起来完全没问题,但是在Xamarin.iOS中,图像与标签重叠.我不确定它的区别是什么–为什么它在Xamarin.Android中看起来不错但在iOS中它的全部都不稳定?

  9. 在iOS上向后播放HTML5视频

    我试图在iPad上反向播放HTML5视频.HTML5元素包括一个名为playbackRate的属性,它允许以更快或更慢的速率或相反的方式播放视频.根据Apple’sdocumentation,iOS不支持此属性.通过每秒多次设置currentTime属性,可以反复播放,而无需使用playbackRate.这种方法适用于桌面Safari,但似乎在iOS设备上的搜索限制为每秒1次更新–在我的情况下太慢了.有没有办法在iOS设备上向后播放HTML5视频?解决方法iOS6Safari现在支持playbackRat

  10. 如何在iOS中设置闹钟?

    我知道这个问题已经在StackOverflow上多次询问但我无法在我的应用程序中设置闹钟,因为我对iOS很新?

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部