Java 铰孔时间视图
您好,我是android开发新手,我需要在我的应用程序中获得帮助,以便在上面的文本视图中查看下一次事件的txt_剩余时间。在文本视图中,我得到了“四”Java 铰孔时间视图,java,android,Java,Android,您好,我是android开发新手,我需要在我的应用程序中获得帮助,以便在上面的文本视图中查看下一次事件的txt_剩余时间。在文本视图中,我得到了“四” public void getTime(){ //使用位置API检索lat、lng 双纬度=31.952162; 双经度=35.233154; 双时区=(Calendar.getInstance().getTimeZone()) .getOffset(Calendar.getInstance().getTimeInMillis()) / (100
public void getTime(){
//使用位置API检索lat、lng
双纬度=31.952162;
双经度=35.233154;
双时区=(Calendar.getInstance().getTimeZone())
.getOffset(Calendar.getInstance().getTimeInMillis())
/ (1000 * 60 * 60);
祈祷时间=新的祈祷时间();
祈祷。设定时间格式(祈祷。时间24);
祈祷。setCalcMethod(祈祷。麦加);
祈祷。塞塔斯库里斯蒂克(祈祷。沙菲);
祈祷。设置调整高度(祈祷。基于角度);
int[]偏移量={3,0,0,0,6,6,7};/{Fajr,Sunrise,Dhuhr,Asr,Sunset,Maghrib,Isha}
祈祷。曲调(抵消);
现在日期=新日期();
Calendar cal=Calendar.getInstance();
校准设定时间(现在);
ArrayList prayerTimes=祈祷。getPrayerTimes(校准,纬度,
经度(时区);
ArrayList-prayerNames=prayers.getTimeNames();
String[]mylistName=新字符串[prayerNames.size()];
mylistName=prayerNames.toArray(mylistName);
String[]mylistTime=新字符串[prairtimes.size()];
mylistTime=祈祷时间。toArray(mylistTime);
最终文本视图txt\u reming=(文本视图)findViewById(R.id.current\u time\u视图);
最终字符串[]finalMylistTime=mylistTime;
LocalTime[]myTimes=新的LocalTime[]{
parse(finalMylistTime[0],时间格式化程序),//fajer
parse(finalMylistTime[2],时间格式化程序),//th
parse(finalMylistTime[3],时间格式化程序),//asser
parse(finalMylistTime[4],时间格式化程序),//magreb
parse(finalMylistTime[6],TIME\u格式化程序)//ishaa
};
LocalTime=LocalTime.now();
if(time.isBefore(myTimes[1]))
{
txt_remaing.setText(“一”);
}
if(time.isBefore(myTimes[2]))
{
txt_remaing.setText(“两个”);
}
if(time.isBefore(myTimes[3]))
{
txt_remaing.setText(“三”);
}
if(time.isBefore(myTimes[4]))
{
txt_remaing.setText(“四”);
}
列表视图=(ListView)findViewById(R.id.listView2);
lviewAdapter=新的ListViewAdapter(this、mylistName、mylistTime);
System.out.println(“适配器=>”+lviewAdapter.getCount());
list_view.setAdapter(lviewAdapter);
}
如果您可以使用Java 8 Java.time库(不确定是否在Android中可用),那么LocalDateTime
类的until
方法显然是值得使用的。这将分为三个步骤:(1)确定下一个祈祷时间(或日出时间),(2)计算还剩多少秒,(3)将其格式化为小时、分钟和秒。哦,这个词是“剩余”,而不是“铰眼”(这意味着别的)。谢谢@dawood ibn kareem。你能告诉我如何确定下一个祈祷时间吗?假设你已经计算了所有六次(五次祈祷时间加上日出),假设ishaa发生在午夜之前(在仲夏,在高纬度地区,情况可能并非如此);最简单的事情可能就是按照时间顺序进行,将每个时间与当前时间进行比较。在当前时间之后的第一个时间就是你想要的时间。如果你找不到在当前时间之后的时间,那么下一个祈祷时间就是明天的fajr。再次感谢@DawoodibnKareem@DawoodibnKareem我用If来做,但我总是这样做第二、第三和第四个if
语句需要是else if
而不是“四”。
public void getTime() {
// Retrive lat, lng using location API
double latitude = 31.952162;
double longitude = 35.233154;
double timezone = (Calendar.getInstance().getTimeZone()
.getOffset(Calendar.getInstance().getTimeInMillis()))
/ (1000 * 60 * 60);
PrayTime prayers = new PrayTime();
prayers.setTimeFormat(prayers.Time24);
prayers.setCalcMethod(prayers.Makkah);
prayers.setAsrJuristic(prayers.Shafii);
prayers.setAdjustHighLats(prayers.AngleBased);
int[] offsets = {3, 0, 0, 0, 6, 6, 7}; // {Fajr,Sunrise,Dhuhr,Asr,Sunset,Maghrib,Isha}
prayers.tune(offsets);
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
ArrayList<String> prayerTimes = prayers.getPrayerTimes(cal, latitude,
longitude, timezone);
ArrayList<String> prayerNames = prayers.getTimeNames();
String[] mylistName = new String[prayerNames.size()];
mylistName = prayerNames.toArray(mylistName);
String[] mylistTime = new String[prayerTimes.size()];
mylistTime = prayerTimes.toArray(mylistTime);
final TextView txt_remaing = (TextView) findViewById(R.id.current_time_view);
final String[] finalMylistTime = mylistTime;
LocalTime[] myTimes = new LocalTime[] {
LocalTime.parse(finalMylistTime[0],TIME_FORMATTER), // fajer
LocalTime.parse(finalMylistTime[2],TIME_FORMATTER), // th
LocalTime.parse(finalMylistTime[3],TIME_FORMATTER), // asser
LocalTime.parse(finalMylistTime[4],TIME_FORMATTER), // magreb
LocalTime.parse(finalMylistTime[6],TIME_FORMATTER) // ishaa
};
LocalTime time = LocalTime.now();
if (time.isBefore(myTimes[1]))
{
txt_remaing.setText("one");
}
if (time.isBefore(myTimes[2]))
{
txt_remaing.setText("two");
}
if (time.isBefore(myTimes[3]))
{
txt_remaing.setText("three");
}
if (time.isBefore(myTimes[4]))
{
txt_remaing.setText("four");
}
list_view = (ListView) findViewById(R.id.listView2);
lviewAdapter = new ListViewAdapter(this, mylistName, mylistTime);
System.out.println("adapter => " + lviewAdapter.getCount());
list_view.setAdapter(lviewAdapter);
}