hi every one after many weak i haveit. for including data i have this code
private HydrationRecord? hydrationRecord;
private WeightRecord? weightRecord;
private Record record;
partial void InsertHydratacionParticular( double MililitresGrames, DateTimeOffset DringDataTime, Type type )
{
Java.Time.Instant instant = Java.Time.Instant.Parse(DringDataTime.ToString($"yyyy-MM-ddTHH:mm:ssZ"));
try
{
CheckAndRequestHealthPermissions();
try
{
InitializeHealthConnect();
}
catch( Exception )
{
throw;
}
// Zkontrolujeme HealthConnectManager
if( HealthConnectManager == null )
{
throw new InvalidOperationException( "HealthConnectManager není inicializován" );
}
// Převedeme mililitry na litry
// Vytvoříme metadata s explicitní inicializací
var metadata = new Metadata.Builder()
.Build();
if( metadata == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit metadata" );
}
// Vytvoříme záznam s kontrolami
//var
if( type == typeof( HydrationRecord ) )
{
double liters = MililitresGrames / 1000.0;
record = new HydrationRecord.Builder(
metadata,
instant, // Instant.Now(),
instant, //Instant.Now(),
Volume.FromLiters( liters )
).Build();
}
else
{
record = new WeightRecord.Builder(
metadata,
instant, // Instant.Now(),
Mass.FromGrams( MililitresGrames )
).Build();
}
if( record == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit záznam" );
}
// Vytvoříme list s kontrolou
IList<Record> records = new List<Record> { record };
// Vytvoříme executor s kontrolou
var executor = Executors.NewSingleThreadExecutor();
if( executor == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit executor" );
}
// Vytvoříme receiver s kontrolou
var outcomeReceiver = new HydrationOutcomeReceiver(result =>
{
Console.WriteLine("OnResult was called!");
if (result != null)
{
Console.WriteLine($"Received result: {result}");
}
else
{
Console.WriteLine("Result was null");
}
});
if( outcomeReceiver == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit receiver" );
}
// Voláme InsertRecords s kontrolou všech parametrů
HealthConnectManager.InsertRecords( records, executor, outcomeReceiver );
}
catch( Exception ex )
{
Console.WriteLine( $"Error inserting hydration record: {ex.Message}" );
throw;
}
}
and for reading
partial void GetHydratacionParticular( Type type )
{
try
{
CheckAndRequestHealthPermissions();
try
{
InitializeHealthConnect();
}
catch( Exception )
{
throw;
}
if( HealthConnectManager == null )
{
throw new InvalidOperationException( "HealthConnectManager není inicializován" );
}
// Vytvoříme časové rozmezí pro dnešní den
var now = DateTime.Now;
var startTimeStr = now.Date.ToString("yyyy-MM-ddTHH:mm:ssZ");
var endTimeStr = now.Date.AddDays(1).ToString("yyyy-MM-ddTHH:mm:ssZ");
var startTime = Java.Time.Instant.Parse(startTimeStr);
var endTime = Java.Time.Instant.Parse(endTimeStr);
// Vytvoříme metadata pro request
var metadata = new Metadata.Builder().Build();
// Vytvoříme executor
var executor = Executors.NewSingleThreadExecutor();
if( executor == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit executor" );
}
// Vytvoříme receiver jako Java objekt implementující IOutcomeReceiver
HydrationOutcomeReceiver outcomeReceiver;
if( type.ToString() == "Android.Health.Connect.DataTypes.HydrationRecord" )
{
outcomeReceiver = new HydrationOutcomeReceiver( result =>
{
if( result != null )
{
ReadRecordsResponse readRecordsResponse = result as ReadRecordsResponse;
HydrationRecords.Clear();
foreach( HydrationRecord item in readRecordsResponse.Records )
{
AddAndMakeHydratationToColection( item );
}
}
else
{
Console.WriteLine( "Result was null" );
}
} );
}
else
{
outcomeReceiver = new HydrationOutcomeReceiver( result =>
{
if( result != null )
{
ReadRecordsResponse readRecordsResponse = result as ReadRecordsResponse;
LastWeight = ( (WeightRecord) ( readRecordsResponse.Records[0] ) ).Weight.InGrams;
OnWeightRecordAdded?.Invoke( LastWeight );
}
else
{
Console.WriteLine( "Result was null" );
}
} );
}
var recordClass = Java.Lang.Class.FromType(type);
var builder = new ReadRecordsRequestUsingFilters.Builder(recordClass);
var readRequest = builder.Build() as ReadRecordsRequest;
if( readRequest == null )
{
throw new InvalidOperationException( "Nepodařilo se vytvořit ReadRecordsRequest" );
}
// Pokračování s vytvořeným requestem
HealthConnectManager.ReadRecords( readRequest, executor, outcomeReceiver );
}
catch( Exception ex )
{
Console.WriteLine( $"Error reading hydration records: {ex.Message}" );
throw;
}
}